我正在尝试完成大学的作业。我已经完成了大部分代码,据我所知,它应该可以工作。但是,我不断收到错误消息。
我不确定要尝试什么,因为我认为这确实是有效的。我重新回顾了以前的讲座,阅读了相关主题的文章,并与我的同学们取得了联系。到目前为止,我还没有找到解决方案。
private static Fraction fraction1;
private static Fraction fraction2;
public static void main(String[] args)
{
String fraction1 = args[0];
String[] splittedFraction1 = fraction1.split("/");
String fraction2 = args[1];
String[] splittedFraction2 = fraction2.split("/");
int numerator1 = Integer.parseInt(splittedFraction1[0]);
int denominator1 = Integer.parseInt(splittedFraction1[1]);
int numerator2 = Integer.parseInt(splittedFraction2[0]);
int denominator2 = Integer.parseInt(splittedFraction2[1]);
fraction1 = new Fraction ( numerator1, denominator1);
fraction2 = new Fraction ( numerator2, denominator2);
是指
class Fraction{
public int numerator;
public int denominator;
public Fraction( int n, int d )
{
this.numerator = n;
this.denominator = d;
}
public Fraction()
{
this.numerator = 1;
this.denominator = 2;
}
}
据我了解,我从命令行获取了String输入。
然后我分割了字符串以标识要设置为整数的输入。
然后我用过int numerator1 = Integer.parseInt(fraction1[0]);
等
将字符串转换为整数。
然后,据我了解,然后我将创建的整数放入用于创建对象的参数中
fraction1 = new Fraction(numerator1, denominator1);
fraction2 = new Fraction(numerator2, denominator2);
,以便我可以将它们传递给我的Fraction类,然后将它们分配给类实例变量。
除了所有这些工作之外,我收到以下错误:
ArithmeticWithFractions.java:42: error: incompatible types: Fraction cannot be converted to String
fraction1 = new Fraction ( numerator1, denominator1);
^
ArithmeticWithFractions.java:44: error: incompatible types: Fraction cannot be converted to String
fraction2 = new Fraction ( numerator2, denominator2);
^
ArithmeticWithFractions.java:47: error: incompatible types: String cannot be converted to Fraction
Calculator calculator = new Calculator(fraction1, fraction2);
发生什么事了?
我以为我用parseInt
将字符串转换为整数。
Gah!
答案 0 :(得分:2)
如果看到代码,则已经两次声明了fraction1
和fraction2
。一个是字符串形式的局部变量,另一个是Fraction
类型的类级别变量。
默认情况下,java使用最低范围变量。因此,在您的情况下,局部变量在图片中,因此会出现不兼容的错误。
如果要使用类级别的变量,则需要像下面那样使用它。
ArithmeticWithFractions.fraction1 = new Fraction ( numerator1, denominator1);
ArithmeticWithFractions.fraction2 = new Fraction ( numerator2, denominator2);
在将其传递给Calculator
构造函数时,您也需要执行同样的操作。
Calculator calculator = new Calculator(ArithmeticWithFractions.fraction1, ArithmeticWithFractions.fraction2);