-1

私はこのエラーを受け取り続け、それを混ぜてみました。しかし、オプションを選択すると、オプションが実行されますが、「1、2、または3を入力しませんでした」と表示されます。

これは完全なコードです。修正方法は?

エラーは

} else {
    System.out.println("You did not enter 1, 2 or 3");
} else {
    System.out.println("The Pin You Entered Was Wrong");
}
4

6 に答える 6

3

これは間違った構文です:

 }else{
        System.out.println("You did not enter 1, 2 or 3");
 }else{
        System.out.println("The Pin You Entered Was Wrong"); 

このようにしてください:

else {
    System.out.println("You did not enter 1, 2 or 3");
    System.out.println("The Pin You Entered Was Wrong"); 
}
于 2013-08-12T10:48:11.653 に答える
2

問題は、貼り付けビンで提供したコードにあります。

2 つの else ステートメントを使用するため、Java は、最初の if ステートメントの後にどちらに移動するかわからないため、不平を言います。

else if、then else を使用して別の条件文を入力する必要があります。例えば:

if (option == 1){
    Option_1 Optionone = new Option_1();
    Optionone.Withdraw();
}
etc

}else if (nothing entered) {
    System.out.println("You did not enter 1, 2 or 3");
}else{
    System.out.println("The Pin You Entered Was Wrong");   
}

また、コードには別の大きな問題があります。変数オプションを宣言し、if ステートメントで設定すると、その if ステートメント内でのみスコープを持ちます。その後、if ステートメントから出て、上記のコードの前に新しいオプション変数を宣言します。オプション integer には値がないため、これは機能しません。

代わりに、次のように、if ステートメントの外で初期オプション int を宣言する必要があります。

int number;
int password = 7123;
int amount = 4000;
int option;

if (number == password) {
    etc...
    option = userInput.nextInt();
}

さらに、入力された番号と保存されているパスワードを照合する if ステートメントから抜け出して、現金の引き出しなどの入力を行います。これは良くありません。これは、パスワードに対する if ステートメントのチェック番号が終了すると、自動的に次のコード ブロックに進むことを意味します。

スキャナー オブジェクトが作成されていないため、最初の 3 つの if ステートメントは false に戻り、else ステートメントが出力されます (入力パスワードが正しいかどうかに関係なく)。

したがって、そのチェックを別のelseステートメントに入れ、whileループを使用して正しい選択が入力されたことを確認することをお勧めします。例えば:

System.out.println("Please Enter Your Bank Pin.");
Scanner userInput = new Scanner (System.in);
int number;
int password = 7123;
int amount = 4000;
int option;

number = userInput.nextInt();

if (number == password) {
    System.out.println("Pin Accepted");
    System.out.println("You Have Now Entered Harry's Bank!");
    System.out.println("Press The Number Of The Option You Would Like.");
    System.out.println("1.Withdraw Money.");
    System.out.println("2.Put In Money");
    System.out.println("3.Exit Bank");
    Scanner Options = new Scanner (System.in);
    option = userInput.nextInt();
    while (option != 1 || option != 2 || option != 3) {
        System.out.println("You didn't enter a valid number. Try again");
        option = userInput.nextInt();
    }
    if (option == 1){
        Option_1 Optionone = new Option_1();
        Optionone.Withdraw();
    }
    else if (option == 2){
        Option_2 Optiontwo = new Option_2();
        Optiontwo.Deposit();
    }
    else if (option == 3){
        Option_3 Optionthree = new Option_3();
        Optionthree.Exit();
    }
}
else
    System.out.println("The Pin You Entered Was Wrong");
}
于 2013-08-12T10:48:41.500 に答える
1

あなたの2番目elseのステートメントはステートメントを閉じませんif

また、option変数は正しいスコープにありません:

これを試して

import java.util.Scanner;

public class Main {

        public static void main(String[] args) {
                System.out.println("Welcome To Harry's Bank");

                //Pin System

                System.out.println("Please Enter Your Bank Pin.");
                Scanner userInput = new Scanner (System.in);   
                        int number;    
                        int password = 7123;    
                        int amount = 4000;   
                        number = userInput.nextInt();
                        int option;

                        if (number == password) {
                            System.out.println("Pin Accepted");
                            System.out.println("You Have Now Entered Harry's Bank!");
                            System.out.println("Press The Number Of The Option You Would Like.");
                            System.out.println("1.Withdraw Money.");
                            System.out.println("2.Put In Money");
                            System.out.println("3.Exit Bank");
                            Scanner Options = new Scanner (System.in);
                            option = userInput.nextInt();
                        }else{
                            System.out.println("The Pin You Entered Was Wrong");    
                        }


                        if (option == 1){
                                Option_1 Optionone = new Option_1();
                                Optionone.Withdraw();
                        }

                         if (option == 2){
                                Option_2 Optiontwo = new Option_2();
                                Optiontwo.Deposit();
                         }

                         if (option == 3){
                                Option_3 Optionthree = new Option_3();
                                Optionthree.Exit();
                         }else{
                                System.out.println("You did not enter 1, 2 or 3");
                     }
        }
}
于 2013-08-12T10:48:22.900 に答える
0

if-else の場合、elseをTWOにすることはできません。

ネストされた If ステートメントは適切ではありません。以下のように使用します

    if (number == password) {
        .....
        .....

        if (option == 1) {
        }
        else if (option == 2) {
        }
        else if (option == 3) {

        } else {
            System.out.println("You did not enter 1, 2 or 3");
        }
    } else {
        System.out.println("The Pin You Entered Was Wrong");
    }
于 2013-08-12T10:48:15.263 に答える
0

問題は、if-else コンストラクトで「else」ステートメントを 2 回使用していることです。

あなたが持っている:

if { }
else { }
else { }

しかし、おそらくあなたは望むでしょう:

if { } 
else if { }
else { }
于 2013-08-12T10:48:29.213 に答える
0

else1 つのブロックに 2 つのブロックを追加することはできません。if

} else {
    System.out.println("You did not enter 1, 2 or 3");
} else {
    System.out.println("The Pin You Entered Was Wrong");
}

1 つをドロップするか、2 つprintln()の s を 1 つのelseブロックにクラブします。

} else {
    System.out.println("You did not enter 1, 2 or 3");
    System.out.println("The Pin You Entered Was Wrong"); 
}

if-then および if-then-elseステートメントの使用方法を見てみましょう。

または、コードをより明確にするためにSwitchステートメントを使用することをお勧めします。

switch (option) {
    case 1:  Option_1 OptionOne = new Option_1();
             OptionOne.Withdraw();
             break;

    case 2:  Option_2 OptionTwo = new Option_2();
             OptionTwo.Withdraw();
             break;

    case 3:  Option_3 OptionThree = new Option_3();
             OptionThree.Withdraw();
             break;

    default: System.out.println("You did not enter 1, 2 or 3");
             System.out.println("The Pin You Entered Was Wrong");
}
于 2013-08-12T10:49:07.593 に答える