Java 将值应用于对象时出错
我需要一些java代码方面的帮助,我似乎被对象vara var=new vara(“banan”、“12.5”、“5”)卡住了。我想既然我在类vara中创建了一个构造函数,它有三个参数String、double和int,那么在测试类中调用它们并得到我想要的结果就可以了,但是我得到一个错误,指出类vara中的构造函数vara不能应用于给定的类型。它说它需要一个字符串,一个double和一个int。但是我已经提供了这些,那么问题是什么呢??我非常感谢任何帮助,我已经坚持了4天了,我只是看不到任何曙光Java 将值应用于对象时出错,java,constructor,Java,Constructor,我需要一些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
从构造函数的最后两个参数中删除双引号:
Vara var = new Vara("Banan",5,12.5);
原因:如果用双引号括起来,则Java将其视为字符串,而不是double或int。由于构造函数不接受三个字符串参数,因此会给出错误
对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
方法必须是static
- main方法一开始就结束了,代码必须在main方法中
对于其他人,请将我的代码与您的代码进行比较。我建议您查看一些基本java教程。删除构造函数最后两个参数中的双引号:
Vara var = new Vara("Banan",5,12.5);
原因:如果用双引号括起来,则Java将其视为字符串,而不是double或int。由于构造函数不接受三个字符串参数,因此会给出错误
对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
方法必须是static
- main方法一开始就结束了,代码必须在main方法中
对于其他人,请将我的代码与您的代码进行比较。我建议您查看一些基本的java教程。您使用错误的参数调用构造函数:
Vara var = new Vara("Banan","12.5","5")
不是您的构造函数所期望的:
public Vara (String name, int antal, double price)
当构造函数需要一个String
、int
、double
时,您正在将三个String
文本传递给构造函数。”
中包含的任何内容都是字符串
替换为:
Vara var = new Vara("Banan",5,12.5);
“Banan”-->它是一个字符串文本
12.5--->默认情况下为双精度,12.5f为浮动
5--->int默认情况下,5l是长的
调用setter方法时需要执行相同的操作。调用构造函数时使用了错误的参数:
Vara var = new Vara("Banan","12.5","5")
不是您的构造函数所期望的:
public Vara (String name, int antal, double price)
当构造函数需要一个String
、int
、double
时,您正在将三个String
文本传递给构造函数。”
中包含的任何内容都是字符串
替换为:
Vara var = new Vara("Banan",5,12.5);
“Banan”-->它是一个字符串文本
12.5--->默认情况下为双精度,12.5f为浮动
5--->int默认情况下,5l是长的
在调用setter方法时需要做同样的事情。因为您将类的构造函数声明为public Vara(String name,int antal,double price)
,所以在
Vara var = new Vara("Banan",5,12.5);
由于您将类的构造函数声明为public Vara(String name,int antal,double price)
,所以在调用时,您应该创建此类的对象,如下所示
Vara var = new Vara("Banan",5,12.5);
请注意,您正在使用3个String
参数调用构造函数:
Vara var = new Vara("banan", "12.5", "5");
由于您只定义了一个构造函数,该构造函数采用字符串
、整数
和双精度
,因此必须删除引号:
Vara var = new Vara("banan", 12.5, 5);
此外,这将不起作用,因为您现在向int
参数提供了double
,反之亦然。所以要么你必须把构造函数改成
public Vara (String name, double price, int antal)
或者把你的电话改成
Vara var = new Vara("banan", 5, 12.5);
请注意,您正在使用3个String
参数调用构造函数:
Vara var = new Vara("banan", "12.5", "5");
由于您只定义了一个构造函数,该构造函数采用字符串
、整数
和双精度
,因此必须删除引号:
Vara var = new Vara("banan", 12.5, 5);
此外,这将不起作用,因为您现在向int
参数提供了double
,反之亦然。所以要么你必须把构造函数改成
public Vara (String name, double price, int antal)
或者把你的电话改成
Vara var = new Vara("banan", 5, 12.5);
双引号括起来的任何东西(包括数字)都是Java中的字符串谢谢你这么好知道..我不知道:)双引号括起来的任何东西(包括数字)都是Java中的字符串谢谢你这么好知道..我不知道:)啊哈,我明白了。。。我试试看。谢谢:)我改了,但还是不行现在不是正确的:Vara var=新Vara(“Banan”,5,12,5);您指定了额外的逗号<代码>Vara var=新Vara(“巴南”,5,12.5)代码>你用逗号代替圆点(.)表示双值12.5现在它告诉我我没有主类…到底是什么造成了这个问题…:/啊哈,我明白了。。。我试试看。谢谢:)我改了,但还是没有