0
import java.util.Scanner;

public class cat{

    public static void main(String args[]){

       System.out.print("Enter a command = ");

       double balance = 0;
       String a;

       //scanner input
       Scanner in = new Scanner(System.in);
       String command = in.nextLine();

       while (in.hasNext()){

            if (command.equals("penny")){
                balance = balance + 0.01;   
                System.out.println("balance = " + balance); 
            }

            if (command.equals("nickel")){
                balance = balance + 0.05;
                System.out.println("balance = " + balance); 
            }
            else {
                System.out.println("return" + balance + "to customer"); 
                break;
            }

            balance++; 
       }

    }

}   

自動販売機の新しいコマンドを読み続ける無限ループを作成しようとしています。これは、特定の条件下でのみ停止する可能性があります。入力が"return"の場合、現在のバランスが文字列に出力されます"return $XX to customer"。(それ以外の場合は、現在の残高に現金を加算/減算し続けます)。

"return ~ to customer "& "balance ="まず、を書くと両方の文字列コマンド()が表示されるため、ifとelseの部分を統合できないようです'penny'。2番目の問題は、意図した無限のコマンドループが端末内で無限の数のフローになり、その理由がわからないことです。

4

2 に答える 2

1

それがあなたが探しているものかどうかはわかりませんが、これはコマンドを送信するまでループしますbreak

import java.util.Scanner;

public class cat {

 public static void main(String args[]) {

    System.out.print("Enter a command = ");

    double balance = 0;
    String a;
    // scanner input
    Scanner in = new Scanner(System.in);

    while (in.hasNext()) {
                    String command = in.nextLine();
        if (command.equals("penny")) {
            balance = balance + 0.01;
            System.out.println("balance = " + balance);
        } else if (command.equals("nickel")) {
            balance = balance + 0.05;
            System.out.println("balance = " + balance);
        } else if (command.equals("break")) {
            break;
        } else {
            System.out.println("return " + balance + " to customer");
        }

        balance++;
    }

 }
}
于 2013-03-16T20:08:31.060 に答える
0

壊れた'if'を修正するには、さらに別のものを追加します。

 else if (command.equals("nickel")){

java7では、switchを使用できます。

switch(command) {
    case "nickel":
        ....
        break;
    case "penny":
        .....
        break;
    default:
       .....; 
}
于 2013-03-16T19:58:14.580 に答える