Java错误,构造函数移动无法应用于给定类型;这是什么意思?

时间:2013-10-20 18:27:48

标签: java

UPDATED CODE,错误说内部类Mobile.mymobile修饰符中的静态非法删除'静态仅允许在常量变量declerations中,第75行,public static void main(String [] args){,这是什么意思?< / p>

我的代码:

   /**
 * to write a simple java class Mobile that models a mobile phone.
 * 
 * @author (jamal) 
 * @version (14/10/13)
 */
public class Mobile

{
    // type of phone
    private String phonetype;
    // size of screen in inches
    private int screensize;
    // menory card capacity
    private int  memorycardcapacity;
    // name of present service provider
    private String serviceprovider;
    // type of contract with service provider
    private int typeofcontract;
    // camera resolution in megapixels
    private int cameraresolution;
    // the percentage of charge left on the phone
    private int checkcharge;
    // wether the phone has GPS or not
    private String GPS;
    // instance variables - replace the example below with your own
    private int x;

    // The constructor method

    public Mobile(String mobilephonetype, int mobilescreensize,
            int mobilememorycardcapacity,int mobilecameraresolution,String mobileGPS, String newserviceprovider) {
        this.phonetype =  mobilephonetype;
        this.screensize = mobilescreensize;
        this.memorycardcapacity = mobilememorycardcapacity;
        this.cameraresolution = mobilecameraresolution;
        this.GPS = mobileGPS;

        // you do not use this ones during instantiation,you can remove them if you do not need or assign them some  default values 
        //this.serviceprovider = newserviceprovider;
        //this.typeofcontract = 12;
        //this.checkcharge = checkcharge;

   Mobile samsungPhone = new Mobile(
    "Samsung" // String mobilephonetype
,   1024    // int mobilescreensize 
,   2      // int mobilememorycardcapacity 
,   8       // int mobilecameraresolution 
,   "GPS"    //String mobileGPS
,   "verizon" // String newserviceprovider 
);


        //typeofcontract = 12;
        //checkcharge = checkcharge;

    }

    // A method to display the state of the object to the screen
    public void displayMobileDetails() {
        System.out.println("phonetype: " + phonetype);
        System.out.println("screensize: " + screensize);
        System.out.println("memorycardcapacity: " + memorycardcapacity);
        System.out.println("cameraresolution: " + cameraresolution);
        System.out.println("GPS: " + GPS);
         System.out.println("serviceprovider: " + serviceprovider);
        System.out.println("typeofcontract: " + typeofcontract);
}

      /**
 * The mymobile class implements an application that
 * simply displays "new Mobile!" to the standard output.
 */
public class mymobile {
    public static void main(String[] args) {
        System.out.println("new Mobile!"); //Display the string.
    }
}
    public static void buildPhones(){
    Mobile Samsung = new Mobile("Samsung", 3, 4, 8, "verizon",
                "GPS");
Mobile Blackberry = new Mobile("Blackberry", 3, 4,
                8, "verizon", "GPS");
        Samsung.displayMobileDetails();
        Blackberry.displayMobileDetails();
}
    public static void main(String[] args) {
        buildPhones();
}  

}

任何答案或回复和帮助都会非常感激,因为我完全迷失了!

2 个答案:

答案 0 :(得分:1)

  

构造函数Mobile无法应用于给定类型;

表示您尝试使用错误的参数调用构造函数。

  

必需的:java.lang.String中,INT,INT,INT,java.lang.String中,java.lang.String中;

表示构造函数需要这些类型用于传递它的参数

  

发现:java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String;

你是实际传递给它的。


Mobile Samsung = new Mobile("Samsung", "3.0", "4gb", "8mega pixels",
                "GPS");
Mobile Blackberry = new Mobile("Blackberry", "3.0", "4gb",
                "8mega pixels", "GPS");

当您的构造函数需要一个String,三个String和两个int时,您传递了五个String个参数。这就是你得到错误的原因。

<强>更新

正确的方法:

Mobile Samsung = new Mobile("Samsung", 3, 4, 8, "verizon"
                "GPS");
Mobile Blackberry = new Mobile("Blackberry", 3, 4,
                8, "verizon", "GPS");

将参数更改为您想要的参数。

你的第一个构造函数调用也是错误的。

Mobile samsungPhone = new Mobile(
    "Samsung" // String mobilephonetype
,   1024    // int mobilescreensize 
,   2      // int mobilememorycardcapacity 
,   8       // int mobilecameraresolution 
,   "verizon" // String newserviceprovider 

);

这里缺少一个参数,它应该是

Mobile samsungPhone = new Mobile(
    "Samsung" // String mobilephonetype
,   1024    // int mobilescreensize 
,   2      // int mobilememorycardcapacity 
,   8       // int mobilecameraresolution 
,   "GPS"    //String mobileGPS
,   "verizon" // String newserviceprovider 
);

答案 1 :(得分:0)

你错过了构造函数String mobileGPS的第五个参数。