Java 范围和访问问题
使用Java并试图解决以下问题时,我的代码不断出现以下错误: “TesterClass.java:41:错误:不兼容的类型:int无法转换为字符串 返回分子;” 代码应该打印出0和1 我改变了周围的一切,我知道这是一个范围和访问问题,只是不知道它在哪里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
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;
}
}