我需要一些关于这个java代码的帮助,我似乎陷入了对象vara var = new vara(“banan”,“12.5”,“5”)。我想,因为我在类vara中创建了一个带有三个参数String,double和int的构造函数,可以在测试类中调用它们并得到我想要的结果但是我得到一个错误,说明类vara中的构造函数vara不能适用于给定的类型。它说它需要一个字符串,一个double和一个int。但我提供了这些,那么问题是什么?感谢任何帮助,我现在坚持了4天,我只是看不到隧道中的任何光线。
import java.lang.String;
public class Vara {
//Deklarerar variabler
private String name;
private double price;
private int antal;
//tildela konstruktorer för de deklarerade variablerna
public Vara (String name, int antal, double price) {
this.name = name;
this.antal = antal;
this.price = price;
} // slut constructor
public void setName(String name) {
this.name = name; }
public void setPrice (double price) {
this.price = price; }
public void setAntal (int antal) {
this.antal = antal; }
public String getName() {
return this.name;}
public double getPrice() {
return this.price; }
public int getAntal() {
return this.antal; }
}
//testklassen ska stå som en egen klass
class Test {
public void main(String[] args){
}
Vara var = new Vara("Banan","12.5","5") {
@Override
public void setName(String name) {
var.setName("Banan");
}
@Override
public void setPrice (double price) {
var.setPrice("12.5");
}
@Override
public void setAntal (int antal) {
var.setAntal("5");
System.out.println("Namnet är " +var.getName() +" priset är " +var.getPrice() +" och antalet är "+var.getAntal() );// här slutar system.out
}// slut main
}
// slut Test klass
答案 0 :(得分:2)
您正在使用错误的参数调用构造函数:
Vara var = new Vara("Banan","12.5","5")
不是您的构造函数所期望的:
public Vara (String name, int antal, double price)
当您希望按指定顺序{/ 1}},String
,String
时,您将三个int
字面值传递给构造函数。 double
中包含的任何内容都是""
字面值。
替换为:
String
“巴南”--->它是一个字符串文字。
12.5 --->默认为double,12.5f为float。
5 ---> int默认情况下,5l很长。
在调用setter方法时,你需要做同样的事情。
答案 1 :(得分:1)
从构造函数的最后两个参数中删除双引号:
Vara var = new Vara("Banan",5,12.5);
原因:如果用双引号括起来,那么它被Java视为String
而不是double或int。并且由于您的构造函数不接受三个String参数,因此会出错。
同样是您在var
对象上调用的setter方法的问题。
setAntal(int antal)
需要int
参数,但您正在传递String
。因此,在调用setter方法的同时删除双引号。
var.setAntal(5);
var.setPrice(12.5);
此外,当您将树参数发送给构造函数时,您无需再次调用setter方法来设置相同的值。
正在运行代码:
public class Vara {
//Deklarerar variabler
private String name;
private double price;
private int antal;
//tildela konstruktorer för de deklarerade variablerna
public Vara (String name, int antal, double price) {
this.name = name;
this.antal = antal;
this.price = price;
} // slut constructor
public void setName(String name) {
this.name = name; }
public void setPrice (double price) {
this.price = price; }
public void setAntal (int antal) {
this.antal = antal; }
public String getName() {
return this.name;}
public double getPrice() {
return this.price; }
public int getAntal() {
return this.antal; }
}
//testklassen ska stå som en egen klass
class Test {
public static void main(String[] args){
Vara var = new Vara("Banan",5, 12.5);
System.out.println("Namnet är " +var.getName() +" priset är " +var.getPrice() +" och antalet är "+var.getAntal() );// här slutar system.out
}
}
指出一些错误:
main
方法必须静态 其他人将我的代码与您的代码进行比较。我建议你看一些基本的java教程。
答案 2 :(得分:1)
请注意,您使用3个String
参数调用构造函数:
Vara var = new Vara("banan", "12.5", "5");
由于您只定义了一个带String
,int
和double
的构造函数,因此必须删除引号:
Vara var = new Vara("banan", 12.5, 5);
这也不起作用,因为您现在向double
参数提供int
,反之亦然。因此,您必须将构造函数更改为
public Vara (String name, double price, int antal)
或将您的电话改为
Vara var = new Vara("banan", 5, 12.5);
答案 3 :(得分:0)
当你将类的构造函数声明为public Vara (String name, int antal, double price)
时,所以你应该调用create这个类的对象如下
Vara var = new Vara("Banan",5,12.5);