bugfix> java > 投稿

scanner.next() のwhileループにラベルを追加する方法に問題があります
ここに私のコードがあります:

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

回答 1 件
  • 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値が読み取られており、ラベルなしで印刷されます。また、他のラベルも間違った順序で表示されます。また、ジョニーが指摘したように、区切り文字にも改行文字を追加する必要があるかもしれません。

あなたの答え