2012-04-11 26 views
2

私はクラスのラボの一部で何らかの問題を抱えていますが、そのほとんどは簡単ですが何らかの理由でmy while文が私の望むことをしていません。それは無効な入力を返し、ユーザーに賃貸人を促すようになっています。ただし、すべての入力が無効であるとみなします。 (コードで分かりやすいはずです)どうすれば修正できますか?私の本で見つけることができないので、私は情報を見つけることができましたか? (2番目のwhileループ、最初のものが動作します)Javaラボでの使用(ユーザーが無効な入力を入力)

import java.util.ArrayList; 
import java.util.Scanner; 
import javax.swing.JOptionPane; 

public class lab8 
{ 
    public static void main (String[] args) 
    { 
     int choice; 
     String item; 
     double costper; 
     ArrayList <String> Items = new ArrayList <String>(); 
     Items.add ("computer"); 
     Items.add ("Monitor"); 
     Items.add ("Color Printer"); 
     Items.add ("Color Scanner"); 
     Items.add ("DVD/CDROM"); 
     Items.add ("To Quit"); 

     ArrayList <Integer> Num = new ArrayList <Integer>(); 
     Num.add (0); 
     Num.add (1); 
     Num.add (2); 
     Num.add (3); 
     Num.add (4); 
     Num.add (5); 

     System.out.println ("\t\tMy Super Computer Store\n"); 
     int index=0; 
     int endex= 0; 
     while (index < Items.size() && endex < Num.size()) 
     { 
      System.out.println ("\t" +Num.get(index)+"\t"+Items.get (endex)); 
      index++; 
      endex++; 
     } 
     Scanner scan = new Scanner (System.in); 
     System.out.print ("\n\t\t\tEnter the item to purchase: "); 
     choice = scan.nextInt(); 
     { 
      if (choice==5) 
      { 
       JOptionPane.showMessageDialog (null, "Thanks for considering My Super Computer Store"); 
       System.exit (0); 
      } 
     } 
     { 
      if (choice==0 || choice==1 || choice==2 || choice==3 || choice==4) 
      { 
       item = Items.get (choice); 
      } 
     } 
     while (choice!=0 || choice!=1 || choice!=2 || choice!=3 || choice!=4 || choice!=5) 
     { 
      System.out.println ("Invalid Input, Please enter a integer between 0 and 5. "); 
      System.out.print ("\n\t\t\tEnter the item to purchase: "); 
      choice = scan.nextInt();  
     } 
     System.out.print ("\n\n\t\t\tEnter the quantity to purchase: "); 
     int Qty = scan.nextInt(); 
    } 
} 
+0

コードを読みやすくするために、インデントを使用してください。 –

+0

申し訳ありません...編集を送信する前に実際に変更内容を確認するのを忘れました。 –

答えて

6

ロジックが間違っています。

あなたがしたい:あなたが書いたものと同じないある

!(choice == 0 || choice == 1 || choice == 2 || choice == 3 || choice == 4) 

DeMorgan's Lawはあなたが、あなたは有効な選択肢のためには整数を使用しているので、ドモルガンの法則

!(choice == 0 || choice == 1 || choice == 2 || choice == 3 || choice == 4) 

によって

(choice != 0 && choice != 1 && choice !=2 && choice !=3 && choice != 4) 

もちろんであることをあなたの友人:)

注意ですまた、条件を使用することができます:

(choice < 0 || choice > 4) 
+0

ああ、私は、ありがとう、感謝します。 –

+1

+1、DeMorganの法律を一番よく使います。 – Dave

2

あなたは||を使用しました。あなたのループ状態で。論理的には、

「選択肢が0でないか、または1でない、または2でない」などと表示されます。つまり、値が1ではないために条件を満たすことを意味します0、それは2ではありません:あなたのwhileループを次のように置き換えてください:

while (choice!=0 && choice!=1 && choice!=2 && choice!=3 && choice!=4) 

そしてあなたは大丈夫でしょう。

関連する問題