-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

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.equalsまたはString.equalsIgnoreCaseメソッドを使用しない。

3)ユーザーから継続的な入力を取得するためにVariableNameメソッドをループしない

于 2013-02-16T02:57:44.653 に答える