Java If Else 缩写语句
Java If Else statement for abbreviations
我一直在研究这段代码,它非常基础,但我才刚刚开始使用 Java,但我不知道它发生了什么。
import java.util.Scanner;
public class Proj {
public static void main(String[] args) {
//Create Scanner
Scanner scanner = new Scanner(System.in);
//Input Abbreviation
System.err.print("Input METAR Abbreviation: ");
scanner.nextLine( );
//Abbreviations
String abb = "";
if (abb.equals("B")) {
System.out.println ("Began At Time ");
}
else if(abb.equals("+")) {
System.out.println ("Heavy intensity");
}
else if(abb.equals("-")) {
System.out.println ("Light intensity");
}
else if(abb.equals("DZ")) {
System.out.println ("Drizzle");
}
else if(abb.equals("E")) {
System.out.println ("Ended At Time");
}
else if(abb.equals("HZ")) {
System.out.println ("Haze");
}
else if(abb.equals("RA")) {
System.out.println ("Rain");
}
else if(abb.equals("SN")) {
System.out.println ("Snow");
}
else(abb !=NULL) {
System.out.println("Unknown Abbreviation");
}
//Close scanner
scanner.close( );
}
}
所以我想做的是,当有人输入其中一个缩写时,它会打印出它的意思,如果缩写不存在,它会打印出未知缩写。
所以我的问题是,当我 运行 它打印 Input METAR Abbreviation 的代码时,你可以输入一个字符串,但在那之后没有任何反应,有人可以帮我吗?谢谢
您正在从 Scanner 读取行但未将其存储在任何地方,请按如下方式更改它:
String abb = scanner.nextLine( );
您调用 scanner.nextLine()
但从未实际捕获或使用其结果。然后,您分配 String abb= ""
。这意味着 abb
将永远是 ""
。这不符合您的任何 if
条件。
如果你这样做 String abb = scanner.nextLine( );
,你会得到你想要的:扫描器将读取下一行,并将该值分配给 abb
。
顺便说一句,我怀疑这段代码能否编译; NULL
不是 Java 中的关键字(Java 区分大小写),else
后面需要一个 if
。但是您也不需要检查 null
,因为 scanner.nextLine()
永远不会 returns(如果没有下一行,它只会抛出 NoSuchElementException
)。所以最后一点应该只是一个普通的 else {
.
存在一些问题:
您应该将 scanner.nextLine()
结果分配给一个变量。在这种情况下,我认为您必须将其分配给 abb
:
字符串abb = scanner.nextLine();
另外,你忘记了最后一个条件中的if
:
else if (abb != null) {
System.out.println("Unknown Abbreviation");
}
还有别忘了Java是区分大小写的,所以必须是null
,而不是NULL
.
我可以建议你使用 switch 语句吗,在你的情况下 switch 比嵌套 if 更容易,你可以使用
switch(condition){
case something:
//do stuff
}
例如
switch(abb){
case "hello":
System.out.println("hi there")
break;
case "else string":
//do something
break;
}
祝你好运!乐于助人
我一直在研究这段代码,它非常基础,但我才刚刚开始使用 Java,但我不知道它发生了什么。
import java.util.Scanner;
public class Proj {
public static void main(String[] args) {
//Create Scanner
Scanner scanner = new Scanner(System.in);
//Input Abbreviation
System.err.print("Input METAR Abbreviation: ");
scanner.nextLine( );
//Abbreviations
String abb = "";
if (abb.equals("B")) {
System.out.println ("Began At Time ");
}
else if(abb.equals("+")) {
System.out.println ("Heavy intensity");
}
else if(abb.equals("-")) {
System.out.println ("Light intensity");
}
else if(abb.equals("DZ")) {
System.out.println ("Drizzle");
}
else if(abb.equals("E")) {
System.out.println ("Ended At Time");
}
else if(abb.equals("HZ")) {
System.out.println ("Haze");
}
else if(abb.equals("RA")) {
System.out.println ("Rain");
}
else if(abb.equals("SN")) {
System.out.println ("Snow");
}
else(abb !=NULL) {
System.out.println("Unknown Abbreviation");
}
//Close scanner
scanner.close( );
}
}
所以我想做的是,当有人输入其中一个缩写时,它会打印出它的意思,如果缩写不存在,它会打印出未知缩写。 所以我的问题是,当我 运行 它打印 Input METAR Abbreviation 的代码时,你可以输入一个字符串,但在那之后没有任何反应,有人可以帮我吗?谢谢
您正在从 Scanner 读取行但未将其存储在任何地方,请按如下方式更改它:
String abb = scanner.nextLine( );
您调用 scanner.nextLine()
但从未实际捕获或使用其结果。然后,您分配 String abb= ""
。这意味着 abb
将永远是 ""
。这不符合您的任何 if
条件。
如果你这样做 String abb = scanner.nextLine( );
,你会得到你想要的:扫描器将读取下一行,并将该值分配给 abb
。
顺便说一句,我怀疑这段代码能否编译; NULL
不是 Java 中的关键字(Java 区分大小写),else
后面需要一个 if
。但是您也不需要检查 null
,因为 scanner.nextLine()
永远不会 returns(如果没有下一行,它只会抛出 NoSuchElementException
)。所以最后一点应该只是一个普通的 else {
.
存在一些问题:
您应该将
scanner.nextLine()
结果分配给一个变量。在这种情况下,我认为您必须将其分配给abb
:字符串abb = scanner.nextLine();
另外,你忘记了最后一个条件中的
if
:else if (abb != null) { System.out.println("Unknown Abbreviation"); }
还有别忘了Java是区分大小写的,所以必须是
null
,而不是NULL
.
我可以建议你使用 switch 语句吗,在你的情况下 switch 比嵌套 if 更容易,你可以使用
switch(condition){
case something:
//do stuff
}
例如
switch(abb){
case "hello":
System.out.println("hi there")
break;
case "else string":
//do something
break;
}
祝你好运!乐于助人