如何在没有.split()的情况下计算字符串中的每个单词?

时间:2016-05-11 17:22:39

标签: java

给定用户输入的字符串句子。使用单词#在单独的行上打印每个单词。例如,如果句子"帽子中的猫"输入后,输出

  

字#1:中   字#2:猫
  字#3:在   字#4:中   字#5:帽子

Scanner input = new Scanner (System.in);

String sentence;
String words = "";
int count = 1;

sentence = input.nextLine();


for (int i = 1; i < sentence.length(); i++)
{
  if (sentence.charAt(i) == ' ')
    count++;
}
{
  words = sentence.substring(0,sentence.indexOf(' '));
  System.out.println(words);
}

5 个答案:

答案 0 :(得分:4)

String s = "The cat in the hat";
Scanner scan = new Scanner(s);
int wordNum = 1;
while(scan.hasNext()){
    String temp = scan.next();
    System.out.println("word#" + wordNum + ": \t" + temp);
    wordNum++;
}

System.out.print("word#" + wordNum + ": \t" + temp + "\t");

如果你想要所有人都在同一条线上

答案 1 :(得分:0)

在for循环中,跟踪每个单词的起始索引(例如,将其存储在变量中)。每当您点击一个新空间时,使用带有数字的子字符串打印出该单词。

您可能想要处理的一些案例。如果句子以一堆空格开头或结尾,则需要处理此句子而不打印任何内容或增加字数。如果单词之间有多个空格,则需要执行相同操作。

答案 2 :(得分:0)

以下代码分隔给定字符串的单词

480x800

答案 3 :(得分:0)

这不是发布作业的正确位置,无论如何下面的代码做你想要的。如果要打印需要存储它们的单词,例如列表或数组。

List<String> words = new ArrayList<>();
String sentence = "The cat in the hat ";

int pos = 0;
int lastCharIndex = sentence.length() - 1 ; 
    for (int i = 0; i < sentence.length(); i++){
        char cur = sentence.charAt(i);
        //start to collect char for word only if 
        //the starting char is not a space  
        if(sentence.charAt(pos) == ' ' ){
            pos+=1;
            continue;
        }
        //continue the cycle if the current char is not a space
        // and it isn't the last char
        if(cur != ' ' && i != lastCharIndex){
            continue;       
        }
        //last word could not terminate with space
        if(i == lastCharIndex && cur != ' '){
            i+=1;
        }

        String word = sentence.substring(pos,i);
        pos=i;
        words.add(word);    
    }

    System.out.println(words);

如果单词之间或句子末尾有额外的空格,代码也要小心。希望这可以提供帮助。

答案 4 :(得分:-1)

你是否尝试过stringbuilder,或者你可以在arraylist中添加所有元素然后对它们进行计数。或计算字符。

Scanner input = new Scanner (System.in);
String sentence;
 String words = "";
  int count = 0;
  for(char c : input.toCharArray()){
   count++;
     }
 System.out.println("The word count is "+ count);