我正在做一个项目,在这个项目中,你在扫描仪中输入一个州的缩写,然后程序会告诉你这个州在美国的哪个地区。我认为我的大部分代码都是正确的,但我以前从未使用过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.");
}
}
}`发布于 2016-10-14 21:12:21
当向该方法传递无效状态时,您最终需要添加一个结果。
代码的其余部分是正确的,但是您需要在方法的末尾返回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检查两个string对象是否具有相同的内容。
发布于 2016-10-14 21:18:13
第一个问题:getRegion()中缺少返回
只需添加
return region;添加该方法的末尾。
第二个问题:使用==而不是equals比较字符串
在您的main中全部替换
if (region == "..."){使用
if (region.equals("...")){发布于 2016-10-14 21:16:25
看起来你只是想把一个
return region;在getRegion方法的末尾。就这样。
https://stackoverflow.com/questions/40044046
复制相似问题