2011-12-19 8 views
1

私は以下のコードをさまざまな方法で試しましたが、うまくいきません。私はそれに2つの問題があります。私は私が継続する場合、すなわち、私はXを押したが、私は押しする必要があるコードを入力しない、それは正しく最初の入力を受け取りX. 以下のJavaコードをより良く書くにはどうすればよいですか?

  • を押したときに、それは量に続けないようにする必要があります

    1. しかし、ループの周りを2番目のタイプにすると、同じ行に "CODE:QUANTITY:"のようなものが出力されます。

    私は立ち往生し、Googleの助けがなかったので、私は本当にここに助けていただきありがとうございます。私は全く新しいプログラミングで、以前の言語での経験はないので、私は本当に詳細なヘルプに感謝します。

    import java.util.Scanner; 
    class WHY 
    { 
        public static void main(String[] args) 
        { 
          Scanner in = new Scanner(System.in); 
          boolean count = true; 
    
          for (int i = 0; count; i++) 
          { 
           System.out.print("CODE: (X to terminate)"); 
           String code = in.nextLine(); 
           System.out.print("QUANTITY: "); 
           int quantity = in.nextInt(); 
    
           if (code.equals("X")) 
            count = false; 
          } 
        }  
    } 
    
  • 答えて

    2
    Scanner in = new Scanner(System.in); 
    
        while (true) { 
         System.out.print("CODE: (X to terminate)"); 
         String code = in.nextLine(); 
         if (code.equalsIgnoreCase("x")) { 
          break; 
         } 
    
         System.out.print("QUANTITY: "); 
         int quantity = in.nextInt(); 
         in.nextLine(); 
        } 
    
    +2

    を 'String.equalsIgnoreCase()'聞いたことがありません? – Bohemian

    +0

    @ボヘミアンありがとう!私はちょうどそれを忘れる!私は答えを編集しました。 +1のコメント。 – Jomoos

    0

    使用System.out.println()

    は、ここでは、コードです。これにより、新しい行が作成されます。

    1

    これは、ステートメントを簡略化する方法(クラスに合わせて配置する方法)に関するサンプルの手続き型疑似コードです。

    private static final String QUIT = "X"; 
    String code = "" 
    
    while (!(code = readCode()).equalsIgnoreCase(QUIT)) { 
        //Process the code read.... 
        System.out.println(); 
        System.out.print("QUANTITY: "); 
        int quantity = in.nextInt(); 
    } 
    
    public String readCode() { 
        Scanner in = new Scanner(System.in); 
        System.out.println(); 
        System.out.print("CODE: (X to terminate)"); 
        return in.nextLine(); 
    } 
    
    +0

    あなたはどこかに '!'を残しましたか? '.equalsIgnoreCase()'は正確に何をしますか? – Bohemian

    +0

    @ボヘミアン、感謝....固定されました。 –

    0

    あなたは、すぐにユーザーが「X」に入ると、ループを切断したいので、あなたはループを停止するbreakキーワードを使用することができます。 forループをwhile(true)ループに置き換えることをおすすめします。これは永遠にループし続けます(これはbreakキーワードを使用してループを無期限に止める場所です)。 System.out.printはテキストを同じ行に出力し、System.out.println()を使用してテキストを印刷し、次の行に移動します。最後に、codeの値を読んだ直後に条件文を移動し、count = falsebreakに置き換えてください。

    最後のヒントとして、if elseステートメントがあるときは常に中括弧を使用することをお勧めします。これは、後で開発時に問題を解決するのに役立ちます。余分な文を追加したり、中括弧を忘れたり、あまりにも気をつけたりする必要があるときです。

    0
    • ブール代数条件でwhileループを使用します。インデックスをどこにも使用しない場合は、特に使用してください。シーケンスの要素を反復するためにforループを使用します。
    • 使用break文ではなく**
    • 使用のJavaコーディングスタイル
    • 使用するSystem.out.println出力テキストの行をブール条件を使用してのループを終了します。

    だから、基本的には:

    import java.util.Scanner; 
    class WHY { 
        public static void main(String[] args) { 
         Scanner in = new Scanner(System.in); 
    
         while(true) { 
          System.out.print("CODE: (X to terminate)"); 
          String code = in.nextLine(); 
          System.out.println("QUANTITY: "); 
          int quantity = in.nextInt(); 
    
          if (code.equals("X")) 
           break; 
         } 
        }  
    } 
    

    **味

    0

    の問題は、それをシンプルに保つ:

    Scanner in = new Scanner(System.in); 
    int total = 0; 
    while (true) { 
        System.out.print("CODE: (X to terminate)"); 
        String code = in.nextLine(); 
        if (code.equalsIgnoreCase("x")) { 
         break; 
        } 
        System.out.print("QUANTITY: "); 
        int quantity = in.nextInt(); 
        total += quantity; 
    } 
    System.out.print("The total is: " + total); 
    
    関連する問題