Loop->数组输出

时间:2015-06-20 15:16:10

标签: java arrays loops output

我正在编写一个循环来填充数组。我想我已经编码了,但是当我通过Java运行已编译的代码时,它在命令提示符中没有出现。

以下是代码:

import java.util.Scanner;
import java.io.*;
public class Pr42
{
    public static void main(String[]args) throws IOException
{
    int k,m,g;
    String n;
    //double g;
    Scanner input1=new Scanner(System.in);
    String[]Name=new String [5];
    double[]Grade=new double[Name.length];
    k=0;
    while (k<Name.length)
        {
        m=k+1;
        System.out.print("Enter the name of student "+m+": ");
        Name[k]=input1.nextLine();
        System.out.print("");
        System.out.print("Please enter the grade of student "+m+": ");
        Grade[k]=input1.nextInt();
        k++;
        }
    }
}

这是命令提示符中的输出:

输入学生1的姓名:

请输入学生1的成绩:

请输入学生姓名2:请输入学生2的成绩:

问题在于关于第二个学生的问题。

我在代码中做错了什么来得到这样的输出?

4 个答案:

答案 0 :(得分:1)

您需要在Name[k] = input1.nextLine();

的下一行标识名称输入
int k, m, g;
String n;
//double g;
Scanner input1 = new Scanner(System.in);
String[] Name = new String[5];
double[] Grade = new double[Name.length];
k = 0;
while (k < Name.length) {
    m = k + 1;
    System.out.print("Enter the name of student " + m + ": ");
    Name[k] = input1.nextLine();
    System.out.print("");
    System.out.print("Please enter the grade of student " + m + ": ");
    Grade[k] = input1.nextDouble();
    input1.nextLine();
    k++;
}

已编辑:正如您在Name[k] = input1.nextLine();代替input1.nextLine();程序正常工作时Tom在此评论中的评论所提到的,但它与数组的值混淆了。 / p>

答案 1 :(得分:1)

Scanner的nextInt未读取&#34;新行&#34;字符。
有两种方法可以解决它。
1.在input1.nextLine();之后调用input1.nextInt();忽略你所得到的内容,只是让它转到下一行。

Grade[k] = input1.nextInt();
input1.nextLine();

2。请致电input1.nextLine();获取成绩。 您获得的String可以转换为int并保存在Grade[k]

String str = input1.nextLine();
Grade[k] = Integer.parseInt(str);

答案 2 :(得分:1)

这有效:

public static void main(String[] args) throws IOException {
    int k, m, g;
    String n;
    // double g;
    Scanner input1 = new Scanner(System.in);
    String[] Name = new String[5];
    double[] Grade = new double[Name.length];
    k = 0;

    while (k < Name.length) {

        m = k + 1;
        System.out.print("Enter the name of student " + m + ": ");
        Name[k] = input1.nextLine();
        System.out.print("Please enter the grade of student " + m + ": ");
        Grade[k] = input1.nextInt();
        input1.nextLine();
        k++;
    }
}

我建议你通过this question,你会明白你的疑虑。摘自该帖子中给出的答案:

  

Scanner#nextInt方法不会读取您输入的最后一个换行符,因此在下次调用Scanner#nextLine时会使用该换行符。

答案 3 :(得分:0)

问题在于:Grade[k] = input1.nextInt();不会在数字后面读取行尾或任何内容。

input1.nextLine();解决问题之后尝试放置Grade[k]=input1.nextInt();

while (k<Name.length)
{
        m=k+1;
        System.out.print("Enter the name of student "+m+": ");
        Name[k]=input1.nextLine();
        System.out.print("");
        System.out.print("Please enter the grade of student "+m+": ");
        Grade[k]=input1.nextInt();
        input1.nextLine();
        k++;
}