我正在编写一个循环来填充数组。我想我已经编码了,但是当我通过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的成绩:
问题在于关于第二个学生的问题。
我在代码中做错了什么来得到这样的输出?
答案 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++;
}