-5

こんにちは、次のエラー メッセージが表示されます: class interface or 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();
}  

}

以前のように構文エラーなしでコンパイルできないため、回答や返信、ヘルプをいただければ幸いです。

4

2 に答える 2

1

コンパイラ エラー以外にも、次のようなものがあります。

public void switchedOnFor(int switchedOnFor)
{ 
  switchedOnFor = switchedOnFor;
}

switchedOnForパラメータは member をシャドウするためswitchedOnFor、つまり、パラメータをそれ自体に割り当てるため、これは効果がありません。

それ(およびこのようなもの)を修正するには、を使用しますthis.switchedOnFor = switchedOnFor;。また、パラメーターを final として宣言し、コンパイラーに支援してもらう方が良い場合もあります。その代入はもうコンパイルされないからです。

編集:コメントで報告されたエラーを要約しますので、私に賛成票を投じないでください。簡潔な答えを提供するだけです。

JonSkeet は基本的なエラーを見つけました:

public class Mobile
{
   ...
}
//Mutator for newserviceprovider
public void setmobileServiceProvider(String newmobileServiceProvider) { ...

メソッドの直前の中かっこはクラスを閉じるため、メソッドはクラス、インターフェイス、または列挙型の外部で定義されます。これがコンパイラーの指示です。

ラグナンダンはこれを見つけました:

public String getprovider()
{
  returnmobileServiceProvider;
}

returnmobileServiceProviderコンパイラは、不明であることや、return ステートメントが欠落していることについて不平を言います。ここでは、単純なスペースがありません。

もう 1 つの問題は、コンストラクターです (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未知の記号です
  • getBalancegetXxxgetter メソッドを暗示しているため、命名規則に違反しています。

上記の一般的なアドバイス:

  • コードをフォーマットすると、エラーを見つけるのに役立ちます
  • Eclipse や Netbeans などの IDE を使用すると、エラーを見つけて修正するのに役立ちます
  • アプリケーションのデバッグ方法を学習すると (ここでも IDE を使用するのが最も簡単です)、上記のシャドーイング エラーのような実行時エラーを見つけるのに役立ちます。
  • 最も重要なポイントの 1 つ:質問を投稿する前に、コードが可能な限り正しく、適切にフォーマットされていることを確認してから、関連する部分と、発生したエラーに関する必要な情報のみを投稿してください (たとえば、コンパイラが/stacktrace が示す)
于 2013-10-22T17:17:47.827 に答える
0

非常に簡単な解決策があります。コードの自動フォーマットを使用します。Eclipse の例: Contextmenue->Source->Format

そうすると、 がsetmobileServiceProviderクラス ブロックの外で定義されていることに気付くでしょう。これは意味がありません。このメソッドとそれに続くすべてのメソッドをクラス ブロック内に移動すると、エラーはなくなります。

きれいにフォーマットされたコードがなければ、そのようなエラーを理解することは不可能です。

于 2013-10-22T17:23:12.933 に答える