尝试在 while 循环中保存来自同一扫描仪的多个输入

trying to save multiple inputs from the same scanner in a while loop

提问人:teambubbel 提问时间:10/2/2022 更新时间:10/2/2022 访问量:130

问:

我正在尝试在while循环中从同一扫描仪获取多个整数值。我需要存储所有值,以便以后可以使用它们。但是,我只能在 while 循环结束时从扫描仪中获取最后一个值。

int antalHeltal = Integer.parseInt(Antal);             
int noll = 1;                                          
int heltal = 0;                                        
String tal1 = "";                                      
Scanner tal = new Scanner(System.in);                  
while (noll <= antalHeltal) {                          
     noll += 1;                                        
    heltal += 1;                                       
    System.out.print("ange heltal " + heltal + ": ");  
                                                       
    tal1 = tal.next();                                 
                                                       
        try {                                          
            Integer.parseInt(tal1);                    
        } catch (NumberFormatException e) {            
            System.out.println("Ogiltigt värde");      
            noll -= 1;                                 
            heltal -=1;                                
        }                                              

我的变量是用瑞典语写的,所以很抱歉,但我希望有人能帮我解决这个问题。将不胜感激。

while循环 java.util.scanner

评论

0赞 xerx593 10/2/2022
while(1 <= 0)!??(永远不会进入此循环;
0赞 Arvind Kumar Avinash 10/3/2022
您是否检查了读取多个扫描仪输入?

答:

0赞 DevilsHnd - 退した 10/2/2022 #1

使用列表,因为它可以动态增长:

Scanner tal = new Scanner(System.in);                  

List<Integer> list = new ArrayList<>();   // *** Add this

while (noll <= antalHeltal) {                          
    noll += 1;                                        
    heltal += 1;                                       
    System.out.print("ange heltal " + heltal + ": ");  
                                                   
    tal1 = tal.next();                                 
                                                   
    try {  
        // **********************************
        int num = Integer.parseInt(tal1);                          
        list.add(num);     
        // **********************************
    } catch (NumberFormatException e) {            
        System.out.println("Ogiltigt värde");      
        noll -= 1;                                 
        heltal -=1;                                
    }    

要稍后访问列表,请执行以下操作:

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

或。。。。

for (int val : list} {
    System.out.println(val);
}  

评论

0赞 Arvind Kumar Avinash 10/3/2022
改进你对几件事的回答:(1)你可以用(也可以教初学者)代替和代替(2)当你可以简单地使用时,是没有意义的。但是,以下内容确实有意义:.noll++noll += 1noll--noll -= 1tal1 = tal.next(); int num = Integer.parseInt(tal1);int num = tal.nextInt();tal1 = tal.nextLine(); int num = Integer.parseInt(tal1);
0赞 teambubbel 10/3/2022
谢谢你们俩的评论。没想到这么快就得到了这么好的帮助。非常感谢