我是 Java 的初学者,这个问题是在我处理一个我已经解决的 HackerRank 问题时出现的,但它仍然让我感到困惑,为什么它在我为解决它而编写的代码的第一次迭代中不起作用。这段代码的作用是把一个字符串和一个整数分成两列,整数限制为三位,字符串限制为10个字符,用“========”覆盖。另外,我打算代码仅在用户输入“无”或空格时结束。
但是,do while 循环继续运行,因为它的条件与扫描器创建的输入变量不匹配,是空格。我有一个线索,当我使用整数扫描器时它可能会干扰字符串扫描器,但我尝试使用 nextLine() 清除扫描器,但它不适用于循环。我尝试使用 scanner.reset() 并首先将整数声明为字符串,然后将其转换回整数,但循环继续进行。我试着简化它,我发现当我使用“word = scanner.nextLine();”时循环结束了但它不适用于循环。希望你们能教育我和解决这个问题的可能方法。
package hackerRankTestCode;
import java.util.Scanner;
import java.lang.*;
import java.util.concurrent.atomic.DoubleAdder;
public class TestCode {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String word = "";
Integer number = 0;
String baruNumber = "";
System.out.println("================================");
do {
word = scanner.next();
number = scanner.nextInt();
String blank = new String(new char[15 - word.length()]).replace("\0", " ");
if(number<100 && number>=10){
baruNumber = "0"+number;
System.out.println(word+blank+baruNumber);
}
else if(number>=0 && number<10) {
baruNumber = "00"+number;
System.out.println(word+blank+baruNumber);
}
else if(number>=100) {
System.out.println(word+blank+number);
}
}
while(!word.isBlank() && number != 0);
scanner.close();
System.out.println("================================");
}
}