Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将值应用于对象时出错_Java_Constructor - Fatal编程技术网

Java 将值应用于对象时出错

Java 将值应用于对象时出错,java,constructor,Java,Constructor,我需要一些java代码方面的帮助,我似乎被对象vara var=new vara(“banan”、“12.5”、“5”)卡住了。我想既然我在类vara中创建了一个构造函数,它有三个参数String、double和int,那么在测试类中调用它们并得到我想要的结果就可以了,但是我得到一个错误,指出类vara中的构造函数vara不能应用于给定的类型。它说它需要一个字符串,一个double和一个int。但是我已经提供了这些,那么问题是什么呢??我非常感谢任何帮助,我已经坚持了4天了,我只是看不到任何曙光

我需要一些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现在它告诉我我没有主类…到底是什么造成了这个问题…:/啊哈,我明白了。。。我试试看。谢谢:)我改了,但还是没有