执行 while 循环条件与通过扫描仪输入的变量不匹配

问题描述 投票:0回答:0

我是 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("================================");
        
    }
}
java java.util.scanner do-while do-loops
© www.soinside.com 2019 - 2024. All rights reserved.