2

私はプログラミング(Javaの学習)の初心者です。ユーザーが選択できる4つの異なるオプションをリストしたプログラムを作成しようとしています。

これがその一部です:

import java.util.*;
    public class fight {

            public static int upgrade1 = 0;
            public static int upgrade2 = 0;
            public static int upgrade3 = 0;
            public static int upgrade4 = 0;

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter your name:");

            String player = scan.next();    

System.out.println("You have earned 2 upgrade points. Which of the following traits would you like to boost by 2 points?\n"
    + " 1. upgrade1\n 2. upgrade2\n 3. upgrade3\n"
    + " 4. upgrade4");

                    if (scan.nextInt() == 1) {
                        upgrade1 = upgrade1 + 2;
                            System.out.println("Your upgrade1 level is now: " + upgrade1);
                    }
                    else if (scan.nextInt() == 2) {
                        upgrade2 = upgrade2 + 2;
                            System.out.println("Your upgrade2 level is now: " + upgrade2);
                    }
                    else if (scan.nextInt() == 3) {
                        upgrade3 = upgrade3 + 2;
                            System.out.println("Your upgrade3 level is now: " + upgrade3);
                    }
                    else if (scan.nextInt() == 4) {
                        upgrade4 = upgrade4 + 2;
                            System.out.println("Your upgrade4 level is now: " + upgrade4);
                    }                                                       
        }
} 

問題は次のとおりです。ユーザーが選択するオプションを入力するときは、数(xは選択した数)x回入力する必要があります。たとえば、ユーザーはオプション3を選択したいと考えています。コンソールが次の行を理解して完了する前に、コンソールに3を3回入力する必要があります。

プログラムを実行した後のコンソールは次のとおりです。

名前を入力してください:rickこんにちは、rick。2アップグレードポイントを獲得しました。次の特徴のうち、2ポイント上げたいのはどれですか?1. upgrade1 2. upgrade2 3. upgrade3 4. upgrade4 3 3 3あなたのupgrade3レベルは次のようになります:2

私はこれが理にかなっていることを願っています、そしてどんな助けも大いに感謝されます(私はただばかげた新人の間違いをしていると思います)。また、その構成について建設的な批判があれば、遠慮なくどうぞ。ありがとう!

4

4 に答える 4

2

scan.nextInt() を繰り返し呼び出すことはできません。もちろん、複数の異なる整数が読み取られることを期待している場合を除きます。

その代わり:

Scanner scan = new Scanner(System.in);
System.out.println("Please enter your name:");
String player = scan.next();
int ichoice = scan.nextInt();
switch (ichoice) {
  case 1:
  ...
于 2012-10-08T14:58:59.450 に答える
1

if ステートメントの 1 つを呼び出すたびscan.nextIntに、別の int が読み取られます。への変更:

int userChoice = scan.nextInt();
if (userChoice == 1)
{
    ...
}
else if (userChoice == 2)

...

建設的な批判については、好きなスタイルを選んで使用してください。あなたのインデントはいたるところにあります。これにより、コードが読みにくくなります。それが一般的に使用されているスタイルであるかどうかは関係ありません。他の人がそれをどう考えているかは問題ではありません。自分が気に入って、それに固執していることを確認してください。

Eclipse はコードを自動フォーマットすることができ、この動作はカスタマイズ可能です (自分のスタイルに合うようにいじることができます)。

于 2012-10-08T14:58:35.300 に答える
0

これは、すべての if/else if ステートメントで scan.nextInt() を呼び出しているためです。あなたがしたいことは、彼らが入力した値を保存してから、if/else if ステートメントで値をチェックすることです。そうしないと、基本的にユーザーに複数回入力を求めることになります。

int input = scan.nextInt();

if (input == 1) {
    upgrade1 = upgrade1 + 2;
        System.out.println("Your upgrade1 level is now: " + upgrade1);
}
else if (input == 2) {
    upgrade2 = upgrade2 + 2;
        System.out.println("Your upgrade2 level is now: " + upgrade2);
}
else if (input == 3) {
    upgrade3 = upgrade3 + 2;
        System.out.println("Your upgrade3 level is now: " + upgrade3);
}
else if (input == 4) {
    upgrade4 = upgrade4 + 2;
        System.out.println("Your upgrade4 level is now: " + upgrade4);
}
于 2012-10-08T15:00:44.533 に答える
0

を呼び出すたびにnextInt()、別の int が入力から読み取られます。したがって、一度だけ呼び出す必要があります。

int choice = scan.nextInt();

if (choice == 1) ...
if (choice == 2) ...
于 2012-10-08T14:58:33.590 に答える