字符串中的反转字

时间:2012-10-28 14:51:29

标签: java string stringtokenizer

我通常可以这样做,这是非常简单的代码,但我有一个脑屁的地狱,我渴望弄清楚我的愚蠢。我写了这个真实的快速尝试我听说过的新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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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();           
 }

答案 2 :(得分:1)

不确定为何使用此StringTokenizer来反转string

顺便说一下你的 for 循环只运行一次而for循环中的String[]只保存一个元素,即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]+ " ");
        }
 }

答案 3 :(得分: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);
    }
}