class td{
int roll;
float per;
String name;
td(int r,float p,String n){
roll=r;
name=n;
per=p;
}
td(){
roll=0;
name="sachin";
per=0;
}
void get(){
try{
DataInputStream x=new DataInputStream(System.in);
roll=Integer.parseInt(x.readLine());
per=Float.parseFloat(x.readLine());
name=x.readLine();
}
catch(Exception e){
System.out.println("the error is" +e);
}
}
void disp(){
System.out.println(roll);
System.out.println(name);
System.out.println(per);
}
}
class std{
public static void main(String ar[]){
td c1 = new td();
td c2 = new td(3,5.600,"ddd");
td c3 = new td();
c1.disp();
c2.disp();
c3.disp();
}
}
当我运行此代码时,我得到了这个:
C:\j2sdk1.4.0\bin\std.java:48: cannot resolve symbol
symbol : constructor td (int,double,java.lang.String)
location: class td
td c2 = new td(3,5.600,"ddd");
^
Note: C:\j2sdk1.4.0\bin\std.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
1 error
Tool completed with exit code 1
答案 0 :(得分:5)
5.600被视为double
,而不是float
。
浮点字面值的类型为float,如果它以字母F结尾 或f;否则它的类型是双倍的,它可以选择以 字母D或d。
由于您没有附加f
,因此它正在搜索您没有为您的班级提供的构造函数td(int r,double p,String n)
,因此会出错。
您需要通过将f
附加到5.600来精确定义浮动参数。
I.e:
td c2 = new td(3,5.600f,"ddd");
答案 1 :(得分:4)
如果你检查错误,那不是因为String
,而是因为Double
。
您需要调用构造函数,如下所示:
td c2 = new td(3,5.600F,"ddd");
因为默认情况下5.600
被认为是Double
,所以编译器会尝试搜索(int,double,java.lang.String)但它不存在,所以它会产生错误。
答案 2 :(得分:0)
td c2 = new td(3,5.600,“ddd”);
在td类中声明的变量与输入的数据不匹配 替换Double的浮动类型。