我写这段代码。但它无法找到第一个病房

时间:2016-02-17 00:23:56

标签: java methods

我仔细查看了,无法找出错误。它无法运行找到第一个病房的最后一部分。我认为我的getWard方法是正确的,我无法找到错误的地方。请帮忙!

 public static void main(String[] args) {
    Scanner inScanner = new Scanner(System.in);
    String input = getInputString(inScanner);
    int count = getWordCount(input);
    System.out.println("Your string has " + count + " words in it.");
    String first = getWord(input , 1);
    System.out.print("The first word is: " + first);


}
    // TODO Auto-generated method stub

private static String getInputString(Scanner inScanner) {
        System.out.println("Enter a string: ");
        String inputString = inScanner.nextLine();
        return inputString;
}
private static int getWordCount(String input) {

    int count = 1;

    for (int i = 0; i < input.length(); i++) {
        if (input.charAt(i) == ' ') {
            count ++;
        }
    }

    return count;
}
private static String getWord(String input, int n){
    String myString = getWord(input , 1);
    return myString;
}
}

3 个答案:

答案 0 :(得分:1)

这将是无休止的递归

private static String getWord(String input, int n){
    String myString = getWord(input , 1);
    return myString;
}

查看你的代码

我想你想要像

这样的东西
  return input.split(" ")[0];

但是你也应该做一些null字符串测试

此外,将int传递给此方法似乎没有任何意义。

答案 1 :(得分:0)

private static String getWord(String input, int n){
  String myString = getWord(input , 1);
  return myString;
}

将永远运行

使用字符串的拆分方法,例如String firstWord = input.split(" ")[0];

您还可以看到:How to split a string in Java

答案 2 :(得分:0)

在您的方法 getWord 中,看起来您正在永久地递归调用自身,而不会在任何地方停止。你有变数&#39; n&#39;根本没用过。这是为什么?

而不是 getWord 你可能需要使用Scanner的方法 next(),如果我是正确的,它将返回整个单词。

此外,我非常确定你算上所有的单词,你到达文档的末尾,这意味着如果你想得到第一个单词,你需要得到扫描仪返回到了开始并重新开始。但在你的位置我也会检查这些信息。