首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java项目-区域

java项目-区域
EN

Stack Overflow用户
提问于 2016-10-14 21:10:01
回答 3查看 46关注 0票数 0

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

我已经将我的工作改进为一个错误,即在我的第一个代码块( switch部分)中缺少一个return语句。我不知道是否有其他代码在影响它,所以我将在这里发布它的大部分内容。提前谢谢。

代码语言:javascript
复制
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.");
       }
     }

  }`
EN

回答 3

Stack Overflow用户

发布于 2016-10-14 21:12:21

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

代码的其余部分是正确的,但是您需要在方法的末尾返回region

更好的代码是直接返回,而不是使用区域设置变量region

代码语言:javascript
复制
  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检查两个string对象是否具有相同的内容。

票数 1
EN

Stack Overflow用户

发布于 2016-10-14 21:18:13

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

只需添加

代码语言:javascript
复制
return region;

添加该方法的末尾。

第二个问题:使用==而不是equals比较字符串

在您的main中全部替换

代码语言:javascript
复制
if (region == "..."){

使用

代码语言:javascript
复制
if (region.equals("...")){
票数 1
EN

Stack Overflow用户

发布于 2016-10-14 21:16:25

看起来你只是想把一个

代码语言:javascript
复制
return region;

在getRegion方法的末尾。就这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40044046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档