所以这是我的测试课:
import java.util.Scanner;
public class test {
public static void main (String[] args){
Film[] f = new Film[10];
Scanner input = new Scanner(System.in);
for (int i=0;i<10;i++){
f[i] = new Film();
System.out.println("Enter Title:");
f[i].setTitle(input.nextLine());
System.out.println("Enter Film Length:");
f[i].setLength(input.nextDouble());
}
}
}
我的对象类Film中有getter和setter方法。这里的问题是输出结果为:
Enter Title:
title1
Enter Film Length:
1
Enter Title:
Enter Film Length:
2
Enter Title:
Enter Film Length:
3
Enter Title:
Enter Film Length:
我该如何修正代码,以要求输入10个用户输入的标题和长度,并在最后显示所有电影的标题和长度?
谢谢。
*我还有一个toString方法:
public String toString(){
return "Title: "+title+" Length: "+length;
}
最佳答案
您的代码在两次迭代后跳过询问标题,因为您使用nextLine()获得标题。在这种情况下,您必须使用next()。
在您的代码中,例如,如果第一个input.nextDouble()收到,
1\n
然后,nextDouble()仅取值“ 1”,并将“ \ n”传递给第二次迭代的nextLine()。
最后,nextLine()读取“ \ n”作为新行,并且nextDouble()在第二次迭代中及之后立即执行。
整个修订的代码如下。
import java.util.Scanner;
public class test {
public static void main (String[] args){
Film[] f = new Film[10];
Scanner input = new Scanner(System.in);
for (int i = 0; i < 10; i++){
f[i] = new Film();
System.out.println("Enter Title:");
f[i].setTitle(input.next());
System.out.println("Enter Film Length:");
f[i].setLength(input.nextDouble());
}
input.close();
for (int i = 0; i < 10; i++) {
System.out.println(f[i]);
}
}
}
class Film {
private String title;
private double length;
public Film() {
}
public void setTitle(String title) {
this.title = title;
}
public void setLength(double length) {
this.length = length;
}
public String toString() {
return "Title: "+title+" Length: "+length;
}
}