0

コードは次のとおりです。

while (keepGoingDay.equals("y") || keepGoingDay.equals("y")){
        System.out.println(acct1);
        System.out.println(acct2);
        Account.reset();

        while (keepGoing.equals("y") || keepGoing.equals("y"))
            {
            //get account number, what to do, and amount
            System.out.print("\nEnter the number of the account you would like to access: ");
            acctNumber = scan.nextLong();
            System.out.print("Would you like to make a deposit (D) or withdrawal (W)? ");
            action = scan.next();
            System.out.print("Enter the amount: ");
            amount = scan.nextDouble();

            if (amount > 0)
                if (acctNumber == acct1.getAcctNumber())
                if (action.equals("w") || action.equals("W"))
                    acct1.withdraw(amount);
                else if (action.equals("d") || action.equals("D"))
                    acct1.deposit(amount);
                else 
                    System.out.println("Sorry, invalid action.");
                else if (acctNumber == acct2.getAcctNumber())
                if (action.equals("w") || action.equals("W"))
                    acct1.withdraw(amount);
                else if (action.equals("d") || action.equals("D"))
                    acct1.deposit(amount);
                else 
                    System.out.println("Sorry, invalid action.");
                else
                System.out.println("Sorry, invalid account number.");
            else
                System.out.println("Sorry, amount must be > 0.");


            System.out.print("\nMore transactions? (y/n)");
            keepGoing = scan.next();        
            }
        System.out.println("End of day stats: ");
        System.out.println("Number of deposits: " + Account.getNumDeposits());
        System.out.println("Number of withdrawals: " + Account.getNumWithdrawals());
        System.out.println("Total value of deposits: " + Account.getTotalDeposits());
        System.out.println("Total value of withdrawals: " + Account.getTotalWithdrawals());
        System.out.print("More days?");
        keepGoingDay = scan.next();
         }

}

これらのメソッドがこれに不可欠であるとは思わないので、スペースを節約するために省略します。

このプログラムの目標は、トランザクションを記録して数日間カウントすることです (金額がわからないため、for ループを使用できませんでした)。

最初の実行は問題なく実行され、その後、内側の while ループをスキップします。

私はブレースを見てきましたが、それが問題だとは思いません。

4

3 に答える 3

1

それとも: Y_y

while (keepGoing.equals("Y") || keepGoing.equals("y")) 

あなたのコードは同じことを、つまりy2 回テストしていました。


参考までに、テストは次のように簡略化できます。

while (keepGoing.equalsIgnoreCase("y")) 
于 2012-12-17T05:50:20.980 に答える
0

スケルトン プログラムを変更する柔軟性があれば、ブール変数を使用していたでしょう。

ただし、keepGoing が「n」に設定されてスキップされるため、keepGoing を「y」にリセットする必要があります。

于 2012-12-17T07:07:18.093 に答える
0

あなたの行と行scan.next(); の後に入れてください。acctNumber = scan.nextLong();amount = scan.nextDouble();

このような。新しく追加した行を確認してください。

            System.out.print("\nEnter the number of the account you would like to access: ");
            acctNumber = scan.nextLong();
            scan.next(); // newly added
            System.out.print("Would you like to make a deposit (D) or withdrawal (W)? ");
            action = scan.next();
            System.out.print("Enter the amount: ");
            amount = scan.nextDouble();
            scan.next(); // newly added
于 2012-12-17T05:58:30.763 に答える