有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java项目区域

我正在做一个项目,你在扫描仪上输入一个州的缩写,然后程序会告诉你该州在美国的哪个地区。我认为我的大部分代码都是正确的,但我以前从未使用过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.");
       }
     }

  }`

共 (3) 个答案

  1. # 1 楼答案

    第一个问题:getRegion()
    中缺少返回 加上

    return region;
    

    添加该方法的结尾

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

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

    if (region.equals("...")){
    
  2. # 2 楼答案

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

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

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

  3. # 3 楼答案

    只是想把你的样子

    return region;
    

    在getRegion方法的末尾。 就这样