首页 > 解决方案 > 在scanner.next()的While循环的获取数据中添加标签

问题描述

我在如何在 while 循环中添加标签时遇到问题,scanner.next()
这是我的代码:

public void readCSV() throws FileNotFoundException{
        try (Scanner scanner = new Scanner(new File("C:/Sample/employees.csv"))) {
            scanner.useDelimiter(",");
            int c = 1;
            while(scanner.hasNext()){
                String a ="";
                if(c == 1){
                    a = "ID:";
                }
                if (c ==2){
                    a = "Name:";
                }
                if (c ==3){
                    a = "Age:";
                }
                if (c ==4){
                    a = "Position:";
                }
                if (c ==5){
                    a = "Salary:";
                }    
                if (c ==6){
                    c = 1;
                }  

                System.out.print(a+scanner.next()+"\n");  
                c++;

            }
        }
       }

此函数的结果:

Employee Record System!
Choose an Operation
(1) View Employee
(2) Add Employee
(3) View Employee by Id
(4) Generate Employee Record
(5) Exit
1
ID:2095
Name:Juan Dela Cruz
Age:24
Position:Programmer
Salary:50000.00
6727
Bruce 
25
Programmer
35000.00
3750
John
23
Junior Programmer
35000.00
8435
Alvin
41
Senior Programmer
100000.00

我想要的是每 5 个具有特定标签的获取数据的数据:

预期输出:

ID:2095
Name:Juan Dela Cruz
Age:24
Position:Programmer
Salary:50000.00
ID:6727
Name:Bruce 
Age:25
Position:Programmer
Salary:35000.00
ID:3750
Name:John
Age:23
Position:Junior Programmer
Salary:35000.00
ID:8435
Name:Alvin
Age:41
Position:Senior Programmer
Salary:100000.00

标签: javajava.util.scanner

解决方案


将while循环更改为此

 while(scanner.hasNext()){
              String a ="";
              if(c == 1){
                  a = "ID:";
              }
              if (c ==2){
                  a = "Name:";
              }
              if (c ==3){
                  a = "Age:";
              }
              if (c ==4){
                  a = "Position:";
              }
              if (c ==5){
                  a = "Salary:";
                  c = 0;
              }  

当您在单独的 if 子句中设置 c=1 时,它已经读取了 id 值,并且将在没有标签的情况下打印。它还会以错误的顺序显示其他标签。此外,正如 Johnny 还指出的那样,您可能还需要在分隔符中添加换行符。


推荐阅读