7

いくつかのプログラミングの割り当て (1 年目) を調べて、これを思いつきました。私がそれを実行すると、プログラムは switch ステートメントのデフォルトにまっすぐ進みます。今から約24時間連続で起きているので、ほとんど気づいていませんが、何がうまくいかないのかわかりません.

誰かが私を書き込み方向に向けることができますか?私はあなたにそれをしてほしくない

// Practical 5B - Question 1
// Nathan Griffin
// 28/02/2013
// Program to simulate a continuos system of deposits and withdraw for a bank account until user exits.

import java.util.Scanner;
public class SingleAccountSim
{
    public static void main(String [] args)
    {
        Scanner keyboardIn = new Scanner(System.in);

        BankAccount account = new BankAccount();

        int menuSelect = 0;
        double depositIn, withdrawalOut;



        do
        {
            System.out.println("*_*_*Monopoly Bank*_*_*");
            System.out.println("1. Deposit money");
            System.out.println("2. Withdraw money");
            System.out.println("3. Get balance");
            System.out.println("4. Quit");

            menuSelect = keyboardIn.nextInt();

            switch(menuSelect)
            {
                case '1':   System.out.print("Please enter the deposit amount: ");
                                depositIn = keyboardIn.nextDouble();
                                account.deposit(depositIn);
                                break;              
                case '2': System.out.print("Please enter the withdrawl amount: ");
                                withdrawalOut = keyboardIn.nextDouble();
                                account.withdraw(withdrawalOut);
                                break;
                case '3': System.out.print("Your current balance is " + account.getBalance());
                                break;
                case '4': System.out.print("Quitting.....");
                                break;
                    default: System.out.println("Invalid selection. Please try again");
            }
        }while(menuSelect !=4);

    }
}
4

4 に答える 4

13

ええと、あなたはint(によるmenuSelect = Scanner.nextInt()) とを比較しているcharので、もちろん一致しません。switch ステートメントでは、文字はint に割り当てられたとき'1'の値と同等です。Java 言語仕様の switch ステートメント49から、あまり知られていない事実として、

caseステートメントに関連付けられたすべての定数式switchは、式の型に割り当て可能 (§5.2) でなければなりませんswitch

たとえば、次の (驚くほど有効な) コードは次のように表示されます49

int a = '1';
System.out.println(a);

したがって、case constantswitch(expression)は同じ型である必要はなく、プリミティブ型のコンパイル エラーは発生しません。を使用してこれを修正できます

switch(menuSelect) {
    case 1:
    ...
    case 2:
    ...
}

charの代わりに を読み込んで、int物事をそのままにしておくこともできます。ただし、Scanner にはnextChar()メソッドがないため、それを使用nextByte()して変換する必要があります。

char menuSelect = (char) keyboardIn.nextByte()
于 2013-02-28T17:28:30.760 に答える
8

値を取得していintますが、それをchar値と比較しています。ステートメント内のchar値はswitch、対応する に昇格されていintます。

実際には、49 (「1」の Unicode 値) を入力すると、「入金額を入力してください」などと出力されます。

変えるだけ

case '1':

case 1:

于 2013-02-28T17:28:59.197 に答える
4

menuSelectis はintwhile'1'charwhich を is に変換するint49... 引用符を削除するだけで、期待どおりに動作するはずです。

于 2013-02-28T17:28:52.500 に答える
0

入力をint型としてプルしますが、場合によってはString引数を使用します。

ケースを次のように変更します。

case 1:
    // do something
    break;
case 2:
    // do something
    break;
//etc..
于 2013-02-28T17:30:50.530 に答える