2016-10-14 12 views
0

私は、州の略語をスキャナに入力して、州のどの地域にいるのかをプログラムに伝えるプロジェクトに取り組んでいます。私のコードの大部分は正しいと思いますしかし、私は以前はスイッチを使用していません。javaプロジェクト - 地域

私は、最初のコードブロック(スイッチセクション)にある1つのエラー、つまりreturnステートメントが欠落しています。他のコードが影響を与えているかどうかは分かりませんので、ここでそのほとんどを投稿します。前もって感謝します。

import java.util.Scanner; 
public class Regions { 
    public static String getRegion (String stateName){ 
    String region = ""; 
    switch(stateName){ 
     case "ME": 
     case "VT": 
     case "NH": 
     case "MA": 
     case "CT": 
     case "RI": 
     region = "New England"; 
     break; 
     case "NY": 
     case "NJ": 
     case "DE": 
     case "MD": 
     case "VA": 
     case "NC": 
     case "SC": 
     region = "Atlantic"; 
     break; 
     case "GA": 
     case "FL": 
     case "MS": 
     case "AL": 
     case "LA": 
     case "TN": 
     region = "Southeast"; 
     break; 
     case "PA": 
     case "OH": 
     case "MI": 
     case "IN": 
     case "IL": 
     case "WI": 
     case "MN": 
     case "KY": 
     case "WV": 
     case "IA": 
     region = "Midwest"; 
     break; 
     case "ND": 
     case "SD": 
     case "KS": 
     case "NE": 
     case "MO": 
     region = "Great Plains"; 
     break; 

    } 
    } 

    public static void main (String[]args){ 
    Scanner s = new Scanner(System.in); 
    System.out.println("Enter a two-letter state abbreviation:"); 
    String stateName = s.nextLine(); 
    String region = getRegion(stateName); 
    System.out.print("The state " + stateName); 
    if (region == "New England"){ 
     System.out.print(" is in the New England region!"); 
    } 
    else if (region == "Atlantic") { 
     System.out.print(" is in the Atlantic region!"); 
    } 
    else if (region == "Southeast") { 
     System.out.print(" is in the Southeast region!"); 
      } 
    else if (region == "Midwest") { 
     System.out.print(" is in the Midwest region!"); 
      } 
    else if (region == "Great Plains") { 
     System.out.print(" is in the Great Plains region!"); 
      } 
    else { 
     System.out.println ("That's not a state."); 
     } 
    } 

    }` 
+1

ですべて

if (region == "..."){ 

を交換してください。 'String'を返すことになっています。 – resueman

+0

プラス[Javaでの文字列の比較方法](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

答えて

1

最終的には、メソッドが無効な状態になったときに結果を追加する必要があります。

残りのコードは正しいですが、メソッドの最後にregionを返す必要があります。

より良いコードは、ロケール変数regionの代わりに直接戻ります。その他として

public static String getRegion (String stateName){ 

    switch (stateName) { 
     case "ME": 
     case "VT": 
     case "NH": 
     case "MA": 
     case "CT": 
     case "RI": 
     return "New England"; 

     case "NY": 
     case "NJ": 
     case "DE": 
     case "MD": 
     case "VA": 
     case "NC": 
     case "SC": 
     return "Atlantic"; 

     case "GA": 
     case "FL": 
     case "MS": 
     case "AL": 
     case "LA": 
     case "TN": 
     return "Southeast"; 

     case "PA": 
     case "OH": 
     case "MI": 
     case "IN": 
     case "IL": 
     case "WI": 
     case "MN": 
     case "KY": 
     case "WV": 
     case "IA": 
     return "Midwest"; 

     case "ND": 
     case "SD": 
     case "KS": 
     case "NE": 
     case "MO": 
     return "Great Plains"; 


    } 
    throw new IllegalArgumentException("invalid state"); 
    // Or return a special string value 
    } 

mainにエラーがあると述べたが、私は尋ねた質問だったgetRegion方法に焦点を当てました。 ==演算子を使用して文字列を比較しないでください。equalsメソッドを使用してください。

== 2つの文字列が同じオブジェクトである場合、equalsが2つの文字列オブジェクトの内容が同じかどうかを確認します。あなたは自分また、getRegion方法の終わりに

return region; 

を置きたいと思うように

0

が見えます。 それだけです。

1

最初の問題:getRegion()
で行方不明のリターンはちょうど

return region; 

は、そのメソッドの終わりを追加します。

第2の課題:あなたのmain==の代わりに、equals
と比較すると、文字列は、その方法には、 `return`はありません

if (region.equals("...")){