0

Scanner に問題があります プログラムを実行すると、このプログラムはスキップされます

System.out.println("name");
n1=s.nextLine();

これがプログラム「Cemploye」のクラスです

package Ex5_2;
import java.util.*;

public class XXXX {
    public static void main(String[] args) {

        int input;
        int c1 ;
        String n1;
        Date d1 = null;
        float p1;
        float [] t = new float[3];

        System.out.println("give nb of emp");

        Scanner s = new Scanner(System.in);

        input=s.nextInt();
        Vector v = new Vector(input);

        for(int i=0 ;i <input;i++)
        {   
            System.out.println("cin");
            c1=s.nextInt();

            System.out.println("name");
            n1=s.nextLine();

            System.out.println("price");
            p1=s.nextFloat();

            for(int k=0 ; k<3;k++)
            {
                System.out.println("nb of hour");

                CEmploye.tab[k]=s.nextFloat();
            }

            CEmploye emp = new CEmploye(c1,n1,d1,p1);
            emp.CalculSalaire();

            System.out.println(emp.salaire);
        }       
    }
}

誰でも私に解決策を教えてもらえますか?

4

4 に答える 4

0

System.in のバッファは、改行を取得するまでフラッシュされません。nextInt()ornextFloat()は改行までブロックされるため、使用できません。

行のすべてを単独で読み取り、それを解析する必要があります (必要に応じていくつかの検証を行います)。

cl = Integer.parseInt(s.nextLine());

pl = Float.parseFloat(s.nextLine());

CEmploye.tab[k]=Float.parseFloat(s.nextLine());
于 2013-11-12T19:03:21.370 に答える
0

nextInt() は、利用可能な次の整数のみを読み取り、入力ストリームに改行文字を残します。s. nextLine() が消費されるため、追加の入力を求められません。

別の nextLine() を追加するだけで、より多くの行を読み取ることができます

于 2013-11-12T19:05:09.720 に答える