2013-12-16 77 views
0

當我輸入牛肉,豬肉,雞肉或芝士漢堡時,應該說「這是你的」,然後輸入任何東西,同時過濾出不在數組中的任何東西。它不工作。任何幫助? (是的,我是Java新手)盡我所能從反饋中得到最好的解決,但仍然無法正常工作。當我從我的數組中輸入東西進入掃描儀時,它沒有執行正確的功能

import java.util.Scanner; 
    public class scannerReview { 
    public static void main(String[] args){ 
     String[] array = new String[]{"Beef","Pork","Chicken","Cheeseburger"}; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("What do you want for dinner? Your options are Beef, Pork, Chicken, and Cheesebugers. "); 
     String food = sc.nextLine(); 
     if(!food.equals(array[0])){ 
      System.out.println("You cannot order that!"); 
     } 
     else if(!food.equals(array[1])){ 
      System.out.println("You cannot order that!"); 
     } 
     else if(!food.equals(array[2])){ 
      System.out.println("You cannot order that!"); 
     } 
     else if(!food.equals(array[3])){ 
      System.out.println("You cannot order that!"); 
     } 
     else{ 
      System.out.println("Here is your" + food); 
     } 
    } 
    } 

控制檯:

What do you want for dinner? Your options are Beef, Pork, Chicken, and Cheesebugers. 
Beef(My input) 
You cannot order that! 
+0

您有一個邏輯問題。你永遠不會達到最後的其他部分。重新思考你的邏輯。 –

+0

謝謝,修復它。當然,所有其他建議。 – Durnehviir

回答

1

使用!equals()代替=在Java中比較字符串。請記住,==!=用於確定兩個對象引用是否指向同一個對象。 equals()確定在這種情況下兩個字符串在字符流方面是否相同。

2

陣列分索引從0不從1

你的數組包含4種元素即陣列[0]至陣列[3]

0

您目前與!=操作者,這意味着比較String小號你正在檢查它們是否在內存中是完全相同的實例 - 如果你從控制檯輸入數據,這可能不會發生。

相反,你應該使用!food.equals(array[1])來比較的String s爲不等於(而不是作爲相同的實例)。

另外,請注意Java中的數組是基於零的 - 第一個元素位於索引0,第二個位於索引1,依此類推。

0

以下是更正代碼

import java.util.Scanner; 
    public class scannerReview { 
    public static void main(String[] args){ 
     String[] array = new String[]{"Beef","Pork","Chicken","Cheeseburger"}; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("What do you want for dinner? Your options are Beef, Pork, Chicken, and Cheesebugers. "); 
     String food = sc.nextLine(); 
     if(food.equals(array[0])){ 
      System.out.println("Here is your" + food); 
     } else if(food.equals(array[1])){ 
      System.out.println("Here is your" + food); 
     } else if(food.equals(array[2])){ 
      System.out.println("Here is your" + food); 
     } else if(food.equals(array[3])){ 
      System.out.println("Here is your" + food); 
     } else { 
      System.out.println("You cannot order that!"); 
     } 
    } 
    } 
1

您可以通過使用像這樣大量縮短這個代碼:

if (Arrays.asList(array).contains(food)) { 
    System.out.println("Here is your " + food); 
} 
else { 
    System.out.println("You cannot order that!"); 
} 

而且,它是使用equals()方法來很好的做法比較字符串而不是==檢查對象是否相等。

if (food.equals(array[1])) { ... } 
+0

@Durnehviir如果它已經幫助你解決了你的問題,或者解決了你的問題,請接受這個答案或者上傳它(或兩者)。謝謝! – csmckelvey