2012-10-28 68 views
-2

我通常可以做到這一點,它非常簡單的代碼,但我有一個大腦放屁地獄,我渴望弄清楚我的愚蠢。我寫了這個真正的快速嘗試一個我聽說過的新IDE,它應該接受一個輸入的字符串,並以相反的順序返回它的單詞,但它一直告訴我,在某個點上,字符串的一個索引[]沒有價值。字符串中的反向詞

import java.util.StringTokenizer; 
import java.util.Scanner; 
public class Example { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     //set up input 
     Scanner input=new Scanner(System.in); 
     System.out.println("type something here"); 
     String sentence=input.nextLine(); 

     //set up StringTokenizer 
     StringTokenizer tokens=new StringTokenizer(sentence); 

     //setup for loop 
     for(int y=tokens.countTokens()-1; y>=0; y--){ 
      String[] word={tokens.nextToken()}; 
      System.out.print(word[y]+" "); 
     } 





    } 

} 
+0

對於這麼簡單的事情,爲什麼你只是運行一個調試器,並通過並觀察你的變量?爲什麼浪費SO的時間,對於這樣簡單的編程問題?另外爲什麼有這麼多的空白行,男人它只是如此不成熟,放置在兩個括號之間的6條線? – Siddharth

回答

2

錯誤在這裏:String[] word={tokens.nextToken()}。你只用一個元素創建一個數組 - 當前的標記。另外countTokens()返回剩餘的令牌。它在每次調用nextToken()之後都會更新。

要修復它:只需遍歷所有令牌,將它們放入列表中,然後向後打印列表。

+0

我明白,當我看着我的代碼時,我應該已經更清楚了,我的煩惱更多的是因爲我無法弄清楚究竟該如何修復它。我嘗試了一些本應該工作的東西,但是,我又遇到了一些大腦功能故障,我似乎無法解決這個問題。 – user1780932

1

問題是String [] word = {tokens.nextToken()}。

我想你想的一些東西,看起來像這樣:

int totalTokens = tokens.countTokens() 
String[] word = new String[totalTokens] 

//setup for loop 
for(int y=totalToken-1; y>=0; y--){ 
    word[y] = tokens.nextToken();   
} 
0

這個方法調用像旁邊(標記)應該工作:

public static void next (StringTokenizer tokens){ 
    String next = null; 
    if (tokens.hasMoreTokens()){ 
     next = tokens.nextToken(); 
     next(tokens); 
    } 
    if (next != null){ 
     System.out.println(next); 
    } 
} 
1

不知道爲什麼你使用這個StringTokenizer只是扭轉一個string

順便說一句你循環只運行一次,並String[]在for循環中只保存一個元素,即userInput(而不是userInput字符數組),看看是否你能弄清楚什麼是錯在你的方法...

public static void main(String[] args) { 

     //set up input 
     Scanner input=new Scanner(System.in); 
     System.out.println("type something here"); 
     String sentence=input.nextLine(); 

     //set up StringTokenizer 
     StringTokenizer tokens=new StringTokenizer(sentence); 
     String tmpStr = tokens.nextToken(); 
     int tmp=tmpStr.length(); 
     for(int y=tmp-1; y>=0; y--){ 
      char[] word=tmpStr.toCharArray(); 
      System.out.print(word[y]+ " "); 
     } 
}