-2

私は通常これを行うことができます。これは非常に単純なコードですが、私は非常に頭がおならをしていて、自分の愚かさを理解したいと思っています。私が聞いた新しい IDE を試してみるために、これを非常に簡単に書きました。入力された文字列を受け取り、逆の順序で単語を返すことになっていますが、ある時点で文字列のインデックスの 1 つが[] には値がありません。

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]+" ");
        }





    }

}
4

4 に答える 4

2

エラーは次のとおりです: String[] word={tokens.nextToken()}。1 つの要素 (現在のトークン) だけで配列を作成します。countTokens()残りのトークンも返します。nextToken()が呼び出された後、毎回更新されます。

それを修正するには: すべてのトークンを反復処理し、それらをリストに入れ、リストを逆方向に出力します。

于 2012-10-28T14:55:09.653 に答える
1

StringTokenizerを逆にするためだけにこれを使用する理由がわかりませんstring

ところで、forループは 1 回だけ実行String[]され、for ループは userInput (userInput 文字の配列ではなく) という 1 つの要素のみを保持します。

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]+ " ");
        }
 }
于 2012-10-28T15:13:45.487 に答える
1

The problem is String[] word = {tokens.nextToken()}.

I think you want some thing that looks like this :

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

 //setup for loop
 for(int y=totalToken-1; y>=0; y--){
     word[y] = tokens.nextToken();           
 }
于 2012-10-28T15:00:08.483 に答える
0

next(tokens) のように呼び出されるこのメソッドは機能するはずです。

    public static void next (StringTokenizer tokens){
    String next = null;
    if (tokens.hasMoreTokens()){
        next = tokens.nextToken();
        next(tokens);
    } 
    if (next != null){
        System.out.println(next);
    }
}
于 2012-10-28T15:04:07.533 に答える