大家好,希望一切都好。我正在完成为作业编写的程序,并且在线程“main”java.lang.ArrayIndexOutOfBoundsException:0中遇到了异常错误:0。我试图根据以前的教程工作来解决它,但没有成功。我过去使用相同的基本代码完成过类似的小型项目,没有出现任何问题。
public class ArithmeticWithFractions {
private static String Num1;
private static String Num2;
private static String Denom1;
private static String Denom2;
public static void main(String[] args) {
Num1 = args[0];
Denom1 = args[1];
Num2 = args[2];
Denom2 = args[3];
int NumeratorOne = Integer.parseInt(Num1);
int NumeratorTwo = Integer.parseInt(Num2);
int DenominatorOne = Integer.parseInt(Denom1);
int DenominatorTwo = Integer.parseInt(Denom2);
Fraction FirstFraction = new Fraction(NumeratorOne, DenominatorOne);
Fraction SecondFraction = new Fraction(NumeratorTwo, DenominatorTwo);
displayresults(FirstFraction, SecondFraction);
}
public static void displayresults(Fraction fr1, Fraction fr2) {
System.out.println("java ArithmeticWithFractions");
System.out.println("--- Basic operations with fractions ---");
Fraction fr3 = fr1.Add(fr2);
System.out.println("The sum: " + fr1 + "+" + fr2 + "=" + fr3);
fr3 = fr1.Subtract(fr2);
System.out.println("The difference: " + fr1 + "+" + fr2 + "=" + fr3);
fr3 = fr1.Product(fr2);
System.out.println("The product: " + fr1 + "+" + fr2 + "=" + fr3);
fr3 = fr1.Quotient(fr2);
System.out.println("The quotient: " + fr1 + "+" + fr2 + "=" + fr3);
}
}
class Fraction {
private int numerator;
private int denominator;
public Fraction() {
numerator = 0;
denominator = 1;
}
public Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
public Fraction Add(Fraction other) {
int newNumerator = ((other.numerator * denominator)
+ (numerator * other.denominator));
int newDenominator = denominator * other.denominator;
Fraction NewFraction = new Fraction(newNumerator, newDenominator);
return NewFraction;
}
public Fraction Subtract(Fraction other) {
int newNumerator = ((other.numerator * denominator)
- (numerator * other.denominator));
int newDenominator = denominator * other.denominator;
Fraction NewFraction = new Fraction(newNumerator, newDenominator);
return NewFraction;
}
public Fraction Product(Fraction other) {
int newNumerator = numerator * other.numerator;
int newDenoinator = denominator * other.denominator;
Fraction NewFraction = new Fraction(newNumerator, newDenoinator);
return NewFraction;
}
public Fraction Quotient(Fraction other) {
int newNumerator = numerator * other.denominator;
int newDenominator = denominator * other.numerator;
Fraction NewFraction = new Fraction(newNumerator, newDenominator);
return NewFraction;
}
public String toString() {
return this.numerator + "/" + this.denominator;
}
public int calcCommonDenominator(int numerator, int denominator) {
if (numerator % denominator == 0) {
return denominator;
}
return calcCommonDenominator(denominator, numerator % denominator);
}
void reduce() {
int gcd = calcCommonDenominator(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
}
错误发生在第 5 行String Fraction = args[0];
,如果编译成功,程序应该允许在一个命令行参数中输入 4 个整数,前两个是第一个分子和第一个分母,最后两个是第二个分子和分母。
最佳答案
如果我正确理解您的前提,您希望允许输入两个分数作为命令行参数。例如,1/2
和 3/4
将输入为:
1 2 3 4
如果是这样,那么您可以简单地捕获这些组件:
String Num1 = args[0];
String Denom1 = args[1];
String Num2 = args[2];
String Denom2 = args[3];
当前代码的第 5 行没有意义:
String Fraction = args[0];
Fraction
对象与String
没有直接关系。我们需要使用提供的构造函数创建一个 Fraction
实例,但这需要两个整数。
编辑:
以下是一种实现方式:
public class ArithmeticWithFractions {
private String num1;
private String num2;
private String denom1;
private String denom2;
public static void main(String[] args) {
num1 = args[0];
denom1 = args[1];
num2 = args[2];
denom2 = args[3];
// ...
}
}
关于java - 由于 main 中的 ArrayIndexOutOfBoundsException 导致编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55877983/