-2

我的程序假设读取 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();
        }


}
4

2 回答 2

2

两件事情。

1) 查看这篇文章,了解在 Java 中比较字符串的正确方法。

2)您的方法中没有循环VariableName(),因此您只需绕行一次,然后退出。

我会打印出用户输入,并且对于您失败的每个测试,打印一个“thisString is not equal to thatString”。这将帮助您了解程序的实际行为方式。

那应该能让你到达那里。

于 2013-02-16T02:39:50.997 回答
1

您的来源中有很多问题,

1)下面的 src 将导致每次调用, 因为您正在关闭完成子句System.exit(0);的 else if 语句。semi-clolon (;)else-if

else if (userInput == "CTRL-C");

{
 System.exit(0);
}

2) 不使用String.equalsString.equalsIgnoreCase方法进行比较。

3) 不在VariableName方法中循环以获取用户的连续输入

于 2013-02-16T02:57:44.653 回答