2016-01-22 78 views
0

我已經創建了一個數組,並使用一個for循環來檢查,如果該數組包含輸入整數或不受此代碼:檢查數組包含一個整數或不使用循環

import java.util.stream.IntStream; 
import java.util.Arrays; 

public class playGame { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int guess; 
     int[] range = IntStream.rangeClosed(1, 100).toArray(); // Set the range from 1 - 100 
     System.out.println(Arrays.toString(range)); 

     System.out.println("Please type a number "); 
     guess = TextIO.getlnInt(); 
     for(int i:range) { // Check if input value is in range or not 
      if(i == guess){ 
       System.out.println("good job"); 
     //... 
    } 
    //... 
} 

該作品很好;然而,當我:

  1. (i != guess) // if guess not in range更換(i == guess)。無論輸入整數範圍是否在1-100,Java總是打印「好作業」。

  2. 當我添加其他語句,如else { System,out.println("terrible"); }或使用break;來打破循環; 它總是打印「可怕」或打印整數是否在範圍內。

  3. 如果不在1-100範圍內,我怎麼能再問人們輸入整數?我應該使用嵌套循環,還是反正更簡單?

請幫我解決這三個問題。

+1

編輯您的文章,並粘貼完整代碼 – kopikaokao

+0

確定對不起我的錯 – Rubit

回答

-2

不使用陣列和一個for循環將會解決你所有的問題。嘗試

if (guess >= 1 && guess <= 100) { 
    System.out.println("good job"); 
} else { 
    System.out.println("terrible"); 
} 

1)我們假設猜測== 10.您的for循環將打印99次「良好的工作」。因爲10!= 1,10!= 2,10 == 10,10!= 100.

2)因爲猜測是!= i 99次。

3)使用一段時間(真)循環,並打印「好工作」後中斷。

+0

高興地幫助您完成作業:) – koem

+0

謝謝,我得到了1和2的問題。 1和100,但如果我只是有一個範圍而不知道它的約束?隨機的還是從輸入中獲取? – Rubit

+0

這並不重要。如果您運行IntStream.rangeClosed(a,b)(帶有&b範圍限制)或者(guess> = a && guess <= b),則是相同的。您必須知道a和b,並在代碼中的某處使用它們,無論是用於創建數組還是在if子句中。首先獲取a和b,然後使用它。 – koem

-2

首先,對於i等於guess,我需要在範圍內......反正我發現這個矛盾。無論如何,要做到這一點沒有for循環:

if(1<=i<=100 && i == guess){ 
      System.out.println("good job"); 

} 

如果1<=i<=100,那麼它在範圍內。這使得for循環成爲if語句,並且將它與其他if語句合併在一起,並放入&& i == guess

1)如果與上面的代碼

2)我不明白你說什麼,但來自官方的Java文檔的工作:

的未標記的break語句終止最裏面的開關,用於, while或do-while語句,但帶標記的中斷終止外部 語句。

3)請嘗試以下操作:

if(1<=i<=100 && i == guess){ 
       System.out.println("good job"); 

    }else if(i<1 || i>100) 
System.out.println("Please type a number in range"); 
    guess = TextIO.getlnInt(); 
+0

1 <= i <= 100在java中不工作 – koem

0

我建議你在數組值上建立一個java.util.HashSet,並用它來檢查給定的數字是否包含在它們中。

Set<Integer> mySet=new HashSet<Integer>(Arrays.asList(range)); 
boolean guessIsContained=mySet.contains(guess); 

如果要循環的用戶輸入,直到猜測是OK,你會奉上while內的整個操作以適當的退出條件:

Set<Integer> mySet=... 
do 
{ 
    // ... input one guess from user. 
    boolean guessIsContained=mySet.contains(guess); 
    // ... evaluate guessIsContained 

} while (!guessIsContained); 
+0

嗨,我不能添加新的HashSet後的類型參數整數?結果總是假的猜測是在1-100範圍內? – Rubit