我的程序假设读取environment.txt,然后反复提示用户输入变量名,并使用environment.txt中定义的变量值进行响应。用户永远保持输入变量名称。 (他们可以使用CTRL-C终止程序。) 在environment.txt中,var1等于Hello var 2等于GoodBye var3等于Program,var4等于Music。每当我的程序在输入输入时提示用户输入时,程序就会关闭并且不输出任何内容。有人可以更改我的代码我不明白发生了什么。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class Environment {
public static String VariableName() {
Scanner input = new Scanner(System.in);
System.out.println("Enter a Variable: ");
String userInput = input.nextLine();
if (userInput == "var1")
{
userInput = "Hello";
return userInput;
}
else if (userInput == "var2")
{
userInput = "GoodBye";
return userInput;
}
else if (userInput == "var3")
{
userInput = "Program";
return userInput;
}
else if (userInput == "var4")
{
userInput = "Music";
return userInput;
}
else if (userInput == "CTRL-C");
{
System.exit(0);
}
return userInput;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("environment.txt");
try{
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e){
System.out.println("File Not Found");
}
VariableName();
}
}
答案 0 :(得分:2)
两件事。
1)查看this article以了解比较Java中字符串的正确方法。
2)你的VariableName()
方法没有循环,所以你只需要一次,然后退出。
我会打印出用户输入,并且对于你失败的每个测试,打印一个" thisString不等于thatString"。这将有助于您了解程序的实际行为。
那会让你到那儿。
答案 1 :(得分:1)
您的来源中存在许多问题,
1)下面的src将导致每次System.exit(0);
调用,因为你正在关闭带有semi-clolon (;)
的else if语句来完成else-if
子句。
else if (userInput == "CTRL-C");
{
System.exit(0);
}
2)未使用String.equals或String.equalsIgnoreCase方法进行比较。
3)不在 VariableName 方法中循环以从用户那里获得连续输入