2016-08-07 36 views
1

我有一个小问题。我需要读一行中的两个单词来表示姓名和姓氏。二维数组,线程“main”中的异常java.util.InputMismatchException

public void Promedios5(){ 
    Scanner Marbis=new Scanner(System.in); 
    String[] x=new String[5]; 
    double[][] a=new double[5][4]; 
    double[] b=new double [5],c=new double[5]; 
    System.out.println("Este programa genera los promedios de las notas de cuatro unidades\n" 
      + "se le solicitarán a usted, el nombre y las cuatro notas"); 
    System.out.println("Podría ingresarlas ahora por favor:"); 
    for(int y=0;y<=4;y++){ 
     System.out.println("Ingrese el nombre:"); 
     x[y]=Marbis.nextLine(); 
     for(int z=0;z<=3;z++){ 
      a[y][z]=Marbis.nextDouble(); 
     } 
     b[y]=a[y][0]+a[y][1]+a[y][2]+a[y][3]; 
     c[y]=b[y]/4; 
    } 
    System.out.println("Ahora usted verá los promedios de las personas:"); 
    System.out.println("Nombre:\t\t\tPromedio"); 
    for(int m=0;m<=4;m++) 
     System.out.printf("%s:\t\t%.2f\n",x[m],c[m]); 
} 

在这里,我有错误:x[y]=Marbis.nextLine();
我知道,我用它在一条线上两个或多个单词,但在第二次机会,它标志着我的错误,像这样的(这是结果,我认为我可以在nextLine使用数组):

MArio Albert 
100 
100.00 
78.00 
100.00 
Ingrese el nombre: 
John Antoinie 
Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextDouble(Scanner.java:2413) 
    at vectormarbis1.MarbisVectors2.Promedios5(MarbisVectors2.java:125) 
    at vectormarbis1.VectorMarbis1.main(VectorMarbis1.java:28) 
C:\Users\ManoloAurelio\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 39 seconds) 
+0

这是因为你的'x [y] = Marbis.nextLine();'在你采用double值后将新的行字符作为一个字符串。尝试在获取双精度值后刷新输入。 – VatsalSura

回答

0

你只flush Java中的输出。

何时放弃剩下的行?为了解决您的问题,您可以拨打

input.nextLine(); 

你需要像您期望从下一行读做这个nextDouble()后。

我希望下面给出的代码可以帮助你解决你的问题。

public void Promedios5(){ 
    Scanner Marbis=new Scanner(System.in); 
    String[] x=new String[5]; 
    double[][] a=new double[5][4]; 
    double[] b=new double [5],c=new double[5]; 
    System.out.println("Este programa genera los promedios de las notas de cuatro unidades\n" 
    + "se le solicitarán a usted, el nombre y las cuatro notas"); 
    System.out.println("Podría ingresarlas ahora por favor:"); 
    for(int y=0;y<=4;y++){ 
    System.out.println("Ingrese el nombre:"); 
    x[y]=Marbis.nextLine(); 
    for(int z=0;z<=3;z++){ 
     a[y][z]=Marbis.nextDouble(); 
    } 
    Marbis.nextLine(); //Just add this line here 
    b[y]=a[y][0]+a[y][1]+a[y][2]+a[y][3]; 
    c[y]=b[y]/4; 
    } 
    System.out.println("Ahora usted verá los promedios de las personas:"); 
    System.out.println("Nombre:\t\t\tPromedio"); 
    for(int m=0;m<=4;m++) 
    System.out.printf("%s:\t\t%.2f\n",x[m],c[m]); 
} 
相关问题