我正在努力完成大学作业。我已经完成了大部分代码,据我所知,它应该可以工作。但是,我不断收到错误消息。
我不太确定该尝试什么,因为我认为这正是它的工作原理。我重新回顾了之前的讲座,完成了主题阅读,并联系了我的同学。到目前为止,我还没有得到解决方案。
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;
}
}
根据我的理解,我从命令行获取了字符串输入。
然后,我分割了字符串来标识我想要设置为整数的输入。
然后我使用了 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);
tarnation 发生了什么?
我以为我用 parseInt
将字符串转换为整数。
啊!
最佳答案
如果您看到代码,则表明您已经声明了 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);
关于java - 不兼容的类型。分数无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822884/