Java 范围和访问问题

Java 范围和访问问题,java,Java,使用Java并试图解决以下问题时,我的代码不断出现以下错误: “TesterClass.java:41:错误:不兼容的类型:int无法转换为字符串 返回分子;” 代码应该打印出0和1 我改变了周围的一切,我知道这是一个范围和访问问题,只是不知道它在哪里 public class TesterClass { public static void main(String[] args) { Fraction f1 = new Fraction(); Fraction f2 = new F

使用Java并试图解决以下问题时,我的代码不断出现以下错误:

“TesterClass.java:41:错误:不兼容的类型:int无法转换为字符串 返回分子;”

代码应该打印出0和1

我改变了周围的一切,我知道这是一个范围和访问问题,只是不知道它在哪里

public class TesterClass
{

public static void main(String[] args)
     {
Fraction f1 = new Fraction();
Fraction f2 = new Fraction(1,2);
System.out.println(f1);
System.out.println(f2.numerator / f2.denominator);  //class Scope
    }
}

/** Class Fraction */
class Fraction
{
// instance variables
private int numerator;
private int denominator;

// constructor: set instance variables to default values
public Fraction()
    {
int d = 1;
numerator = d;
denominator = d;
    }

// constructor
public Fraction(int initNumerator, int initDenominator)
    {
numerator = initNumerator;
denominator = initDenominator;
    }
 
public String toString()
    {
if (denominator == 1)
return numerator;
return numerator + "/" + denominator;
    }

public int getNum()
   {
return numerator;
   }

public int getDen()
   {
return denominator;
   }
}

应该打印出来

一,
0

返回分子
本身无法工作,因为该方法应返回
字符串
,但
分子
的类型为
int

如果要使用
If(分母==1)
保持距离,则需要手动将分子转换为
字符串。
例如,您可以使用

返回字符串.valueOf(分子)

(谢谢@Antonio)

您还尝试从TesterClass类访问私有字段分子和分母

要解决您的错误,您可以执行以下操作:

public String toString() {
    if (denominator == 1)
        return numerator+"";
    return numerator + "/" + denominator;
}

当我删除该行时,我现在得到了以下错误:TesterClass.java:43:error:missing return statement}@rodes先生,我想你需要将
分子
int
转换为
String
,使用
String.valueOf(分子)
。编辑了我的answer@Antonio,你说得对,谢谢@罗兹先生,雅各布,不客气!我想这就是我从一开始就在寻找的答案。我需要+“”来保持字符串。非常感谢。
public class TesterClass
{
public static void main(String[] args)
    {
    Fraction f1 = new Fraction();
    Fraction f2 = new Fraction(1,2);
    System.out.println(f1.getNum());
    System.out.println(f1);
    System.out.println(f2);
    }
}

/** Class Fraction */
class Fraction
{
    // instance variables
    private int numerator;
    private int denominator;
    
    // constructor: set instance variables to default values
    public Fraction()
    {
    int d = 1;
    int n = 1;
    numerator = n;
    denominator = d;
    }
// constructor: set instance variables to init parameters 

public Fraction(int initNumerator, int initDenominator)
    {
    numerator = initNumerator;
    denominator = initDenominator;
    }

public String toString()
    {
    if (denominator == 1)
    return String.valueOf(numerator);
    return String.valueOf(numerator) + "/" + String.valueOf(denominator);
    }

public int getNum()
    {
    return numerator;
    }
    
public int getDen()
    {
    return denominator;
    }
}