我怀疑我的代码没有退出while循环

时间:2019-09-10 14:35:34

标签: java string loops

当我输入与while循环中的条件不匹配的字符串时,循环将继续

要求我编写一个函数,该函数查找字符串中的元音数量,并且编写一个主程序,该函数向该函数发送输入,并且该函数返回字符串中的元音数量。然后,在主程序中打印出具有最大元音数量的字符串。

我接受输入,而在一个输入中,字符串不是空的(“”),当我按Enter键输入空字符串时,while循环将继续,并且不会按原样打印具有最大元音数量的字符串。

代码:

import java.util.*;
class ex_5
{
      public static int checkvowels (String sentence)
      {
          int countvowels=0;
          int i;
          for (i=0;i<sentence.length();i++)
          {
              if ((sentence.charAt(i)=='a')||(sentence.charAt(i)=='e')||(sentence.charAt(i)=='i')||(sentence.charAt(i)=='o')
              ||(sentence.charAt(i)=='u')|| (sentence.charAt(i)=='A')||(sentence.charAt(i)=='E')||(sentence.charAt(i)=='I')
              ||(sentence.charAt(i)=='O')||(sentence.charAt(i)=='U'))
              {
              countvowels++;
            }
        }
            return countvowels;

    }
   public static Scanner reader= new Scanner(System.in);
   public static void main(String[]args)
   {
     int max=0;
     String maxvowels="";
     System.out.println("Insert a sentence");
     String sentence=reader.next();
     while (!sentence.equals(""))
     {
         if (checkvowels(sentence)>max)
            {
                max=checkvowels(sentence);
                maxvowels=sentence;
            }
          System.out.println("Insert a sentence");
           sentence=reader.next();
        } 
        System.out.println(maxvowels);
    }
}

我希望代码在输入空字符串并执行下一个命令时退出。 谢谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您需要将 reader.next()替换为 reader.nextLine()

next():仅扫描遇到的第一个空格字符。
同时
nextLine():读取直到'\ n'字符为止的所有内容(每次按回车键)

关于next()和nextLine()之间的区别的更详细的问题已经存在 在以下链接中回答:

What's the difference between next() and nextLine() methods from Scanner class?

答案 1 :(得分:0)

您必须将reader.next()替换为reader.nextLine()reader.next()不会占用整个句子,而只会占用一个单词。我在下面运行了代码,进行了更改后,它可以完美地工作。

import java.util.Scanner;
public class Main {

    public static int checkvowels (String sentence)
    {
        int countvowels=0;
        int i;
        for (i=0;i<sentence.length();i++)
        {
            if ((sentence.charAt(i)=='a')||(sentence.charAt(i)=='e')||(sentence.charAt(i)=='i')||(sentence.charAt(i)=='o')
                    ||(sentence.charAt(i)=='u')|| (sentence.charAt(i)=='A')||(sentence.charAt(i)=='E')||(sentence.charAt(i)=='I')
                    ||(sentence.charAt(i)=='O')||(sentence.charAt(i)=='U'))
            {
                countvowels++;
            }
        }
        return countvowels;

    }
    public static Scanner reader= new Scanner(System.in);
    public static void main(String[]args)
    {
        int max=0;
        String maxvowels="";
        System.out.println("Insert a sentence");
        String sentence=reader.nextLine();
        while (!sentence.equals(""))
        {
            if (checkvowels(sentence)>max)
            {
                max=checkvowels(sentence);
                maxvowels=sentence;
            }
            System.out.println("Insert a sentence");
            sentence=reader.nextLine();
        }
        System.out.println(maxvowels);
    }
}