Java 对象数组,请求两个不同的输入



这是我的测试类:

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() 收到,

1n

然后,nextDouble() 只取值 "1",并将 "" 传递给第二次迭代的 nextLine()。

最后,nextLine() 将 "" 读作换行符,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;
    }
}

在第一个 for 循环之后,写:

for(Film currentFilm : f)
{
    System.out.println(currentFilm);
}

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());
        }
        for(Film currentFilm : f)
        {
            System.out.println(currentFilm);
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新