2015-12-03 107 views
0

我遇到了一個問題,我的方法之一。我一遍又一遍地檢查過,我似乎無法找到任何錯誤。我遇到的問題是該方法在調用它時不在控制檯中打印。我認爲這可能與該方法中的掃描儀有關。方法不打印/返回

該方法的代碼是:

public String cpuGuess() throws FileNotFoundException{ 
     Scanner fileRead = new Scanner(myGuesses); 
     int line = rand.nextInt(99-1)+1; 
     for(int i = 0; i <= line; i++){ 
      Guess = fileRead.next(); 
     } 
     fileRead.close(); 
     CPUGuess = Guess; 
     if(Arrays.asList(super.used).contains(CPUGuess)){ 
      System.out.println(cpu.cpuGuess()); 
     } 
     else{ 
      StringBuffer hiddenBuff = new StringBuffer(hidden); 
      for (int t = 0; t < phrase.length();) 
       if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){ 
        count++; 
       } 
      if (phrase.contains(CPUGuess)){ 
       ArrayList<Integer> indicies = new ArrayList<Integer>(); 
       for (int index = phrase.indexOf(CPUGuess.toString()); index >= 0; index = phrase.indexOf(CPUGuess.toString(), index + 1)){ 
        indicies.add(index); 
       } 
       int[] index = new int[indicies.size()]; 
       for(int i = 0; i < indicies.size(); i++) { 
        index[i] = indicies.get(i); 
       } 
       for (int n = 0; n < index.length; n++){ 
        hiddenBuff.setCharAt(index[n], CPUGuess.charAt(0)); 
       } 
       hidden = hiddenBuff.toString(); 
       status = "Correct"; 
      } 
      else if (!phrase.contains(CPUGuess)){ 
       System.out.println("Sorry, no " + Guess + "'s"); 
       System.out.println("Human, you're up!"); 
      } 
      super.used.add(CPUGuess.charAt(0)); 
     } 
     System.out.println(count + " " + CPUGuess + "s"); 
     count = 0; 
     return hidden; 
    } 

我叫主類中的方法主要方法下:

public static void main(String[] args) throws FileNotFoundException { 
    System.out.println("WHEEL... OF... FORTUNE!!!!"); 
    System.out.println(board.phraseGenerate()); 
    System.out.println(cpu.cpuGuess()); 
} 

請注意CPU的對象已經被構造和董事會.phraseGenerate創建隱藏和短語。

感謝您的幫助,請不要居高臨下,我在這方面比較新,而且我看到很多帖子都令人灰心。

+0

你得到**「輪...與財富!!!!」 **在當您運行控制檯日誌碼? – Raf

+0

是的,這裏是控制檯的一個例子 –

+0

WHEEL ... OF ... FORTUNE !!!! S T A R W A R S _ _ _ _ _ _ _ _ –

回答

0

看你的代碼,你似乎你的for循環,如下圖所示後失蹤的左大括號:

for (int t = 0; t < phrase.length();) 

這應該是

for (int t = 0; t < phrase.length();) { } 

以上導致打印語句被跳過。不要忘記,正如我在評論中提到的那樣,您正在跳過循環的第三部分(增量)。不知道這是否是你的代碼是如何工作的,或者你必須添加的T ++有如下圖所示:

//not sure if you forgot t++ or that's how it is supposed to work 
for (int t = 0; t < phrase.length(); t++) { } 
+0

問題是缺少't ++',而不是大括號。沒有大括號就可以正常工作。 – Andreas

+0

使用這些大括號,循環什麼都不做,所以你的建議基本上就是刪除循環。 – Andreas

+0

我在我的評論@Andreas中提到過,並且更新了我的答案以給他必要的指示。 – Raf

1

您必須增加t在for循環:

for (int t = 0; t < phrase.length();) 
       if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){ 
        count++; 
       } 

而且,你錯過了一個開放的大括號......它發生在我們身上。最後,與增量和大括號:

for (int t = 0; t < phrase.length(); t++) { //Need that curly brace! 

        if (CPUGuess == Character.valueOf(phrase.charAt(t)).toString()){ 
         count++; 

    } 
} 

       //t++ Probably important...! 
+0

't ++'需要進入'for'循環。如果它在'if'語句中,它仍然會一直循環。 – Andreas

+0

@Andreas是的,我知道......這是一個錯字。我的意思是將其添加爲註釋,並將其添加到for循環中。沒關係,因爲我編輯了它。儘管感謝您的反饋! –

+0

它不*需要大括號,但是如果你添加它,你應該添加匹配的末端大括號,否則它不會被編譯。 – Andreas