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





    }

}
4

4 回答 4

2

错误在这里:String[] word={tokens.nextToken()}。您创建一个只有一个元素的数组 - 当前标记。还countTokens()返回剩余的令牌。每次nextToken()调用后都会更新。

修复它:只需遍历所有标记,将它们放入列表中,然后向后打印列表。

于 2012-10-28T14:55:09.653 回答
1

不知道为什么你使用它StringTokenizer只是为了反转一个string.

顺便说一句,你的for循环只运行一次,并且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]+ " ");
        }
 }
于 2012-10-28T15:13:45.487 回答
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();           
 }
于 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 回答