当我输入与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);
}
}
我希望代码在输入空字符串并执行下一个命令时退出。 谢谢您的帮助!
答案 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);
}
}