不兼容的类型。小数不能转换为字符串

时间:2019-04-24 05:22:21

标签: java

我正在尝试完成大学的作业。我已经完成了大部分代码,据我所知,它应该可以工作。但是,我不断收到错误消息。

我不确定要尝试什么,因为我认为这确实是有效的。我重新回顾了以前的讲座,阅读了相关主题的文章,并与我的同学们取得了联系。到目前为止,我还没有找到解决方案。

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!

1 个答案:

答案 0 :(得分:2)

如果看到代码,则已经两次声明了fraction1fraction2。一个是字符串形式的局部变量,另一个是Fraction类型的类级别变量。

默认情况下,java使用最低范围变量。因此,在您的情况下,局部变量在图片中,因此会出现不兼容的错误。

如果要使用类级别的变量,则需要像下面那样使用它。

ArithmeticWithFractions.fraction1 = new Fraction ( numerator1,  denominator1);
ArithmeticWithFractions.fraction2 = new Fraction ( numerator2,  denominator2);

在将其传递给Calculator构造函数时,您也需要执行同样的操作。

Calculator calculator = new Calculator(ArithmeticWithFractions.fraction1, ArithmeticWithFractions.fraction2);