2014-06-23 40 views
0

所以我只是做一些簡單的事情。我做了一個簡單的Java程序,在這裏你輸入你猜測卷子將存儲在一個數組中的內容,然後與隨機生成的兩個數字進行比較。所以我的問題是如何在不引用確切的索引(即不是array [0] = number [1])的情況下對數字與兩個數字進行比較?我這樣做主要是爲了弄清楚數組是如何工作的。另外爲什麼其他錯誤?比較一個數組和兩個靜態值

public static void main (String [] args){ 

    java.util.Scanner input = new java.util.Scanner(System.in); 
    int [] guess= new int [2]; 
    System.out.print("Enter " + guess.length + " values: "); 
    for (int i=0; i<guess.length;i++) 
     guess[i] = input.nextInt(); 

    method(guess); 



} 

public static String method(int [] that){ 
    int number1 = (int)(Math.random() * 6); 
    int number2 = (int)(Math.random() * 6); 
    for (int i =0;i<that.length;i++){ 
     if(that[i]==number1 and that[i]+1==number2) 
     { 
      return "You got it"; 
     } 
     else 
     { 
      return "try again"; 
     }//end else 
    } //end for 
}//end method 
+2

我認爲有更好的方法來了解有關數組的知識。看看一些Java書籍。另外'that [i] + 1 == number2'應該是'that [i + 1] == number2'。 – ctzdev

+0

改正你的格式 - 尤其是縮進 - 語法錯誤將會很明顯。 – blafasel

+0

我有幾個,但如果你有任何書籍的建議讓我知道 – user3685048

回答

0

你不能寫and像,如果你想AND兩個條件寫&&。同樣在你的if條件下,我認爲你的意思是增加你的index that[i+1]==number2,你是增加了隨機數本身。所以,你如果情況看起來如下: -

if(that[i]==number1 && that[i+1]==number2) 
     { 
      return "You got it"; 
     } 
    else{ 
     .. 
     } 

還想補充一點,你輸出You got ittry again不會對用戶可見的,因爲你只是從調用main()它返回一個String,但沒有方法method(guess);做任何事返回String。你必須這樣寫,才能在控制檯上看到輸出。

System.out.println(method(guess)); 
+0

最後一個問題,我想我知道了爲什麼它會說未能在 – user3685048

+0

@ user3685048結束時返回,在方法結束時沒有返回語句。您必須在方法末尾放置return語句 – gjman2

+0

它現在可以工作,該函數有錯誤,因此它無法從if或else返回任何值。 –

0

您可以檢查該數組是否包含元素或不喜歡這個

Arrays.asList(that).contains(number1) 

如果數組包含的元素否則爲假,它將返回true

+0

我必須導入某些東西才能使它工作,因爲它不能識別「數組」 – user3685048

+0

是的ofcourse,java.util.Arrays –

0
如果你想針對這兩個編號的數組的比較沒有引用精確索引,然後你可以做的第一件事

是使用增強的for循環,以避免數組的索引這樣

for(int number: that){ 
    // do your comparison while iterating numbers in that(array) as "number" 
}