我一直在研究这个代码,它非常基本,但我刚开始使用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( );
}
}
所以我要做的是当有人输入其中一个缩写时,它打印出它意味着什么,如果缩写不存在,则打印出Unknown Abbreviation。 所以我的问题是,当我运行代码时,它打印输入METAR缩写,你可以输入一个字符串,但之后没有任何反应,有人可以帮助我。感谢
答案 0 :(得分:2)
您致电scanner.nextLine()
但从未实际捕获或使用其结果。然后,您指定String abb= ""
。这意味着abb
始终为""
。这与您if
的任何条件都不匹配。
如果您执行String abb = scanner.nextLine( );
,您将获得所需内容:扫描程序将读取下一行,并将该值分配给abb
。
顺便说一下,我怀疑这段代码是否会编译; NULL
不是Java中的关键字(Java区分大小写),else
后面需要if
。但是您也不需要检查null
,因为scanner.nextLine()
永远不会返回它(如果没有下一行,它只会抛出NoSuchElementException
)。所以最后一点应该是普通的else {
。
答案 1 :(得分:2)
存在一些问题:
您应该将scanner.nextLine()
结果分配给变量。在这种情况下,我认为您必须将其分配给abb
:
String abb = scanner.nextLine();
此外,您忘记了最后一个条件中的if
:
else if (abb != null) {
System.out.println("Unknown Abbreviation");
}
并且不要忘记Java区分大小写,因此它必须是null
,而不是NULL
。
答案 2 :(得分:2)
我建议你使用switch语句,在你的情况下切换更容易而不是嵌套if,你可以使用
switch(condition){
case something:
//do stuff
}
例如
switch(abb){
case "hello":
System.out.println("hi there")
break;
case "else string":
//do something
break;
}
祝你好运!很乐意提供帮助
答案 3 :(得分:1)
您正在从扫描仪读取该行但未将其存储在任何位置,请按以下方式进行更改:
String abb = scanner.nextLine( );