java项目-区域

java项目-区域,java,project,Java,Project,我正在做一个项目,你在扫描仪上输入一个州的缩写,然后程序会告诉你该州在美国的哪个地区。我认为我的大部分代码都是正确的,但我以前从未使用过switch 我已经将我的工作细化为一个错误,在我的第一个代码块(switch部分)中缺少一个return语句。我不知道是否有其他代码影响它,所以我只想在这里发布它的大部分内容。提前谢谢 import java.util.Scanner; public class Regions { public static String getRegion (Strin

我正在做一个项目,你在扫描仪上输入一个州的缩写,然后程序会告诉你该州在美国的哪个地区。我认为我的大部分代码都是正确的,但我以前从未使用过switch

我已经将我的工作细化为一个错误,在我的第一个代码块(switch部分)中缺少一个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.");
       }
     }

  }`

当向方法传递无效状态时,最终需要添加一个结果

代码的其余部分是正确的,但您需要在方法末尾返回
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
方法


=
检查两个字符串是否为同一对象,
检查两个字符串对象是否具有相同的内容。

当传递给方法的结果为无效状态时,最终需要添加一个结果

代码的其余部分是正确的,但您需要在方法末尾返回
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
方法


=
检查两个字符串是否为同一对象,
检查两个字符串对象是否具有相同的内容。

看起来您只是想放置一个

return region;
在getRegion方法的末尾。
就这样。

看起来你只是想放一个

return region;
在getRegion方法的末尾。
就是这样。

第一个问题:在
getRegion()中缺少返回值。

加上

添加该方法的结尾

第二个问题:将字符串与
=
进行比较,而不是与
进行比较
在
main中
全部替换

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


第一个问题:在
getRegion()

加上

添加该方法的结尾

第二个问题:将字符串与
=
进行比较,而不是与
进行比较
在
main中
全部替换

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


在该方法中没有
返回。它应该返回一个
字符串
。另外,该方法中没有
返回
。它应该返回一个
字符串