你好,我收到错误信息:class interface或enum expected,这是什么意思?
我的代码:
/**
* to write a simple java class Mobile that models a mobile phone.
*
* @author (john)
* @version (22/10/13)
*/
public class Mobile
{
// type of phone
private String phonetype;
// size of screen in inches
private int screensize;
// memory card capacity
private int memorycardcapacity;
// name of present service provider
private String mobileServiceProvider;
// type of contract with service provider
private int mobileTypeOfContract;
// camera resolution in megapixels
private int cameraresolution;
// the percentage of charge left on the phone
private int chargeUp;
// wether the phone has GPS or not
private int switchedOnFor;
// to simulate using phone for a period of time
private int charge;
// checks the phones remaining charge
private String provider;
// simulates changing the provider
private String GPS;
// instance variables - replace the example below with your own
// The constructor method
public Mobile(String mobilephonetype, int mobilescreensize,
int mobilememorycardcapacity, String mobileServiceProvider, int mobileTypeOfContract, int mobilecameraresolution, String mobileGPS, int chargeUp,int switchedOnFor, String changeProvider,int getBalance) {
/**
*recieves orders for mobiles at the given price.
*/
this(yourCostHere);
price= 1000;
balance= 0;
total= 0;
}
/**
*returns a field price.
*/
public int getPrice()
{
return price;
}
/**
*return the amount of change due for orders of mobiles.
*/
public int getBalance()
{
return balance;
}
//this.serviceprovider = newserviceprovider;
//this.typeofcontract = 12;
//this.checkcharge = checkcharge;
//this.changeProvider = giffgaff;
//Mobile samsungPhone = new Mobile(
// "Samsung" // String mobilephonetype
//, 1024 // intmobilescreensize
//, 2 // intmobilememorycardcapacity
//, 8 // intmobilecameraresolution
//, "GPS" //String mobileGPS
//, "verizon" // String newserviceprovider
//, "100" // intchargeUp
//, "25" // intswitchedOnFor
//, "25" // intcheckCharge
//, "giffgaff"// String changeProvider
//);
//typeofcontract = 12;
//checkcharge = checkcharge;
}
//Mutator for newserviceprovider
public void setmobileServiceProvider(String newmobileServiceProvider)
{
mobileServiceProvider = newmobileServiceProvider;
}
//Mutator for contracttype
public void setmobileTypeOfContract(int newmobileTypeOfContract)
{
mobileTypeOfContract = newmobileTypeOfContract;
}
//Mutator for chargeUp
public void setchargeUp(int chargeUp)
{
chargeUp = chargeUp;
}
//Mutator to simulate using phone for a period of time
public void switchedOnFor(int switchedOnFor)
{
switchedOnFor = switchedOnFor;
}
//Accessor for type of phone
public String getType()
{
returnphonetype;
}
//Accessor for provider
public String getprovider()
{
returnmobileServiceProvider;
}
//Accessor for contract type
public int getContractType()
{
returnmobileTypeOfContract;
}
//Accessor for charge
public int getCharge()
{
returnchargeUp;
}
//Accessor which checks the phones remaining charge
public int checkCharge()
{
returncheckCharge;
}
// simulates changing the provider
public void changeProvider()
{
provider = changeProvider
}
public int getBalance()
{
return balance;
}
// 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("mobileServiceProvider: " + mobileServiceProvider);
System.out.println("mobileTypeOfContract: " + mobileTypeOfContract );
}
/**
* The mymobile class implements an application that
* simply displays "new Mobile!" to the standard output.
*/
public class mymobile {
public void main(String[] args) {
System.out.println("new Mobile!"); //Display the string.
}
}
public static void buildPhones(){
Mobile Samsung = new Mobile("Samsung",3,4,"verizon",8,12,"GPS",100,25,"giffgaff");
Mobile Blackberry = new Mobile("Samsung",3,4,"verizon",8,12,"GPS",100,25,"giffgaff");
}
public static void main(String[] args) {
buildPhones();
}
}
任何答案或回复和帮助将不胜感激,因为我无法像之前那样进行编译而没有语法错误。
答案 0 :(得分:1)
除了编译器错误之外,还有其他错误,例如:这一个:
public void switchedOnFor(int switchedOnFor)
{
switchedOnFor = switchedOnFor;
}
这将无效,因为参数switchedOnFor
会遮挡成员switchedOnFor
,即您将参数分配给自身。
要解决这个问题(和其他人一样),请使用this.switchedOnFor = switchedOnFor;
。将参数声明为final也可能更好,因此让编译器帮助您,因为该赋值不再编译。
编辑:我将总结评论中报告的错误,所以请不要为我们提供投票。这只是提供一个简明的答案。
JonSkeet发现了一个基本错误:
public class Mobile
{
...
}
//Mutator for newserviceprovider
public void setmobileServiceProvider(String newmobileServiceProvider) { ...
在方法关闭类之前的大括号,因此方法在类,接口或枚举之外定义,这是编译器告诉你的。
Raghunandan找到了这个:
public String getprovider()
{
returnmobileServiceProvider;
}
编译器会抱怨returnmobileServiceProvider
未知以及缺少return语句。在这里,缺少一个简单的空间。
另一个问题是你的构造函数(正如Raghunandan所暗示的那样):
public Mobile(String mobilephonetype, int mobilescreensize, int mobilememorycardcapacity, String mobileServiceProvider, int mobileTypeOfContract, int mobilecameraresolution, String mobileGPS, int chargeUp,int switchedOnFor, String changeProvider,int getBalance) {
/**
*recieves orders for mobiles at the given price.
*/
this(yourCostHere);
price= 1000;
balance= 0;
total= 0;
}
这里有多个问题:
this(yourCostHere);
将无法编译)yourCostHere
是一个未知符号getBalance
违反了命名惯例,因为getXxx
暗示了一个getter方法上述一些一般性建议:
答案 1 :(得分:0)
有一个非常简单的解决方案:使用自动代码格式化。例如在eclipse中:Contextmenue-> Source-> Format
这样做,您会注意到setmobileServiceProvider
是在类块之外定义的,这没有任何意义。在类块中移动此方法和任何后续内容,错误消失。
如果没有干净的格式化代码,就无法理解这些错误。