我的程序有问题

时间:2013-02-16 02:32:20

标签: java text-files java.util.scanner

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


}

2 个答案:

答案 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.equalsString.equalsIgnoreCase方法进行比较。

3)不在 VariableName 方法中循环以从用户那里获得连续输入