0

我需要一些有关此 java 代码的帮助,我似乎卡在对象 vara var = new vara("banan","12.5","5") 上。我想,因为我在类 vara 中创建了一个带有三个参数 String、double 和 int 的构造函数,所以可以在测试类中调用它们并得到我想要的结果,但是我收到一个错误,指出类 vara 中的构造函数 vara 不能适用于给定类型。它说它需要一个字符串、一个双精度和一个整数。但是我已经提供了这些,有什么问题吗?我要感谢任何形式的帮助,我已经坚持了 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
4

4 回答 4

2

您正在使用错误的参数调用构造函数:

Vara var = new Vara("Banan","12.5","5")

不是您的构造函数所期望的:

public Vara (String name, int antal, double price)

String当构造函数需要一个String,时int,您将三个文字传递给double 指定的 order。包含在其中的任何内容""都是String文字。

用。。。来代替 :

Vara var = new Vara("Banan",5,12.5);

"Banan" ---> 它是一个字符串字面量。

12.5 ---> 默认为双精度,12.5f 为浮点型。

5 ---> 默认为 int , 5l 为长。

在调用 setter 方法时,您需要做同样的事情。

于 2013-07-05T08:14:17.227 回答
1

请注意,您使用 3 个String参数调用构造函数:

Vara var = new Vara("banan", "12.5", "5");

由于您只定义了一个采用 a String、 anint和 a的构造函数,因此double您必须删除引号:

Vara var = new Vara("banan", 12.5, 5);

这也不起作用,因为您现在doubleint参数提供 a ,反之亦然。所以要么你必须改变你的构造函数

public Vara (String name, double price, int antal)

或将您的呼叫更改为

Vara var = new Vara("banan", 5, 12.5);
于 2013-07-05T08:20:43.820 回答
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方法必须是静态的
  • main 方法一开始就结束,代码必须在 main 方法中。

对于其他人,将我的代码与您的代码进行比较。我会推荐你​​看一些基本的java教程。

于 2013-07-05T08:13:59.713 回答
0

由于您将类的构造函数声明为public Vara (String name, int antal, double price),因此您应该调用创建此类的对象,如下所示

Vara var = new Vara("Banan",5,12.5);
于 2013-07-05T08:16:36.767 回答