- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在参加初级编码类(class),这是我的作业: 编写一个名为 palindromeCheck 的 void 方法,该方法不带任何参数。该方法应该具有检查单词是否是回文并将所有回文打印到屏幕上的功能,每行一个。此外,输出的最后一行应包含消息:“There are x palindromes out of y Words generated by user”(其中 x 是检测到的回文单词数,y 是用户输入的单词总数)。提示:对于本实验练习,您将需要 String 对象的以下方法:length() 给出字符串的长度(即它包含的字符数),charAt(i) - 给出位置 i 处的字符。 由于输入的输入应该由空格分隔,因此我对如何创建迭代每个输入的单词的 while 循环感到困惑。我的教授以她希望我们创建的方法的框架的形式为我们提供了帮助。该框架中有一个 while 循环,它对输入的每个单词执行操作
while (keyboard.hasNext()){
someWord = keyboard.next();
// some code that performs actions
}
这个 while 循环可以工作,但在完成并应该终止后,它只会提示输入更多输入。下面是我当前的代码,除了这个逻辑错误之外,应该完成它。
public static void palindromeCheck(){
String someWord = ""; // Stores words read from user input
int count = 0; // keeps track of Palindrome words only
int total = 0; // Counts the total number of lines read from the given text file
int score = 0; // used as a condition to count palindrome words
System.out.println("Enter some words separated by white space.");
Scanner keyboard = new Scanner(System.in);
while (keyboard.hasNext()) { // for each word user enters
someWord = keyboard.next(); // store each word in a string variable and then do operations
score = 0;
int n = (someWord.length()-1);
for (int i = 0; i < (someWord.length()-2); i++){
for (int j = (someWord.length()-1); i < (someWord.length()-2); j--){
j = n;
n--;
if(someWord.charAt(i) == someWord.charAt(j)){
break;
}
else
score++;
}
}
if(score == 0){ // if word is palindrome adds to counter
count++;
}
total++; // increment number of words as you read each one
//System.out.println(" " + total + " " + someWord); // test
}
System.out.println("There are " + count + " palindromes out of " + total + " words provided by user.");
}
最佳答案
您不能依赖 keyboard.hasNext()
来告诉您程序何时应该停止。键盘基本上是无限的输入源,因此 keyboard.hasNext()
可能永远返回false
。如果上一个输入行中有一些数据尚未处理,它将立即返回true
。但是,如果前一行的所有数据都用完,keyboard.hasNext()
将只是等待您输入另一行,然后在您输入后返回 true
已按 ENTER 键。
由于您不能依赖 keyboard.hasNext()
来告诉您是时候停止处理单词了,因此您必须编写其他方法来决定程序何时应该停止。
从用户的角度来看,最好的方法是读取一整行输入,处理该行上的所有单词,然后停止。您使用keyboard.nextLine()
读取整行输入:
String inputLine = keyboard.nextLine();
之后,您可以选择如何将该行分解为单独的单词。以下是两种方法的示例。
使用扫描仪(字符串)
:
String inputLine = keyboard.nextLine();
Scanner wordScn = new Scanner(inputLine);
while (wordScn.hasNext())
{
String someWord = wordScn.next();
// ... process someWord
}
使用String.split(String delimRegEx)
:
String inputLine = keyboard.nextLine();
String[] words = inputLine.split("\\s+");
for (String someWord : words)
{
// ... process someWord
}
split
的 "\\s+"
参数是一个正则表达式,它指定单词之间的分隔符,意思是“空格 ( \s
)、(+
) 中的一个或多个。
关于java - .hasNext() 和 .next() 导致无限 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184143/
有人可以告诉我,如果 (ListIterator it = listIterator(); it.hasNext(); )部分代码应写为 for (ListIterator it = list.lis
我试图调用 hasNext Velocity 模板中的方法,以便根据 foreach 循环中的位置影响行为 - 仅 hasNext没有按照文档工作。 这是 Velocity 用户指南的片段,关于 ha
我正在尝试读取文件并提取最大的数字。我想读完文件,但 hasNext() 一直给我 true 。当我尝试将其更改为 hasNextInt() 时,即使我的字符为整数,它也永远不会进入。如何跳出循环并正
我想使用下面的代码片段来允许用户一次输入四个值,并用空格分隔,在这种情况下,它们将被单独捕获并分配给变量。或者,用户可以一次输入一个值,同时等待每个值之间的提示。如果 if(in.hasNext())
Scanner scanner = new Scanner(System.in); // check if the scanner has a token System.out.pri
我正在一个在线编程竞赛网站上做一道编程题。说明是,当用户有输入要输入时,它应该继续获取用户输入(不是来自文件)。代码大致如下: public static void main(String[] arg
我对以下与 Java OOP 和 Java API/源代码安排有关的情况感到困惑。基于Oracle's Java 8 API , hasNext() 是一个抽象方法,但是我找不到 hasNext()
我正在编写一个迭代器,它通过委托(delegate)给“当前”列表自己的迭代器来迭代列表列表。 (不,我不是,但这是一个简单的例子)。现在,当我到达一个列表的末尾时,我需要更新委托(delegate)
我是 Java 的新手,正在尝试这个问题,我应该输入一对值(两个字符串一次一个),这意味着循环直到我退出使用ctrl z。只有等级将用于开关;该名称只是一个虚拟值。 我的预期输出是: 输入名称:(然后
var intList = Iterator(range(1,10)) println("data"+intList) println(intList.hasNext) 最后一行给出 True,而对于
所以我是编程的初学者,我想弄清楚问题出在哪里 以下函数。问题出在 scan.hasNext() 方法上 我有两个 println 语句(一个在我进行扫描之后,一个在第二种方法上)告诉我 scan.ha
这个问题已经有答案了: Using Mockito with multiple calls to the same method with the same arguments (14 个回答) 已关
我在尝试理解如何循环用户将给出的键盘输入文本行时遇到问题,例如: 阿尼卡 14 丹 16 我想读取每个标记并分配给字符串名称、整数、年龄、字符串名称、整数年龄。以该顺序。然而,这很容易,如果用户输入阿
在迭代器循环中不建议使用 iterator.hasNext() 吗? 例如,我想将值 obj 设置为列表的每个元素。我可以使用以下代码或通过在循环中使用 hasNext() 使其更具可读性。 int
我正在尝试让 Java 使用 hasNext()、hasNextLine() 和 while 循环来计算文本文件中的行数,尽管我似乎是遇到一些麻烦。该程序将持续运行,我相信它陷入了无限循环。如果有人可
我想从 CSV 文件恢复对象。我需要知道扫描仪是否有 2 个下一个值:scanner.hasNext() 问题是我的访问构造函数有两个参数,我需要确保我的 csv 文件中至少还剩下 2 个。 相关代码
我想要使用的日志文件是制表符分隔的,如下所示: 2019-06-06 10:01:02 1.0 2019-06-06 10:25:12 100.0 2019-06-06 11:02:32
我正在尝试在递归方法中使用迭代器。如果列表中没有下一个元素,则应退出该方法。但是,如果光标位于最后一个位置,则使用 iterator.hasNext() 检查返回 true,我除外 false? 有什
我应该编写一个程序来处理用户输入并将其翻译成 Pig Latin 并打印出来。我翻译成 pig 拉丁语的指令是: Pig Latin 是英语,其首辅音移至每个单词的末尾,后跟“ay”。以元音开头的单词
我有一个作业程序,但我无法弄清楚最后的花絮。它需要能够接受一大段“DNA”代码。给出的样本在 100,000+ 范围内。我一开始就写了适合小样本、一行的内容,非常棒。助教告诉我,我应该能够添加一个 w
我是一名优秀的程序员,十分优秀!