Java 输入和显示数据

Java 输入和显示数据,java,arrays,eclipse,for-loop,Java,Arrays,Eclipse,For Loop,我需要输入3部电影的三个细节,然后让它们显示出来,有些问题不允许我在其中输入数据,显示的数据只包含一个单词 以下是作业问题: 为每个私有数据成员和 您还应该编写一个适当的构造函数。您的应用程序应该包括一个测试人员/驱动程序 类,它创建电影类的三个实例并将它们存储在一个数组中。你的测试员 类应该使用for循环来设置电影对象的标题、类型和分级。你应该 同时使用for循环,您应该遍历数组,并显示每个数组的标题、流派和评级 元素,并为每个对象调用playIt()方法 有人能告诉我代码出了什么问题吗?如果

我需要输入3部电影的三个细节,然后让它们显示出来,有些问题不允许我在其中输入数据,显示的数据只包含一个单词

以下是作业问题:

为每个私有数据成员和 您还应该编写一个适当的构造函数。您的应用程序应该包括一个测试人员/驱动程序 类,它创建电影类的三个实例并将它们存储在一个数组中。你的测试员 类应该使用for循环来设置电影对象的标题、类型和分级。你应该 同时使用for循环,您应该遍历数组,并显示每个数组的标题、流派和评级 元素,并为每个对象调用playIt()方法

有人能告诉我代码出了什么问题吗?如果问题不多,你能告诉我如何使用数组和for循环吗。我正在使用eclipse

司机班

class Movie {

    //private instances
    private String title = "unassigned";
    private String genre = "unassigned";
    private int rating = 0;

    void playIt() {
        System.out.println(" - Now Playing");
    }

    //getters
    public String getTitle(){
        return title;
    }

    public String getGenre(){
        return genre;
    }

    public int getRating(){
        return rating;
    }

    //setters
    public void setTitle(String title){
        this.title = title;
    }

    public void setGenre(String genre){
        this.genre = genre;
    }

    public void setRating(int rating){
        this.rating = rating;
    }

}//end class
测试员

import java.util.Scanner;

public class Movie_Tester {

    public static void main(String [] args){

        Movie one = new Movie();
        Movie two = new Movie();
        Movie three = new Movie();

        //declare variables
        String title1, title2, title3;
        String genre1, genre2, genre3;
        int rating1, rating2, rating3;

        Scanner input = new Scanner(System.in);
        Scanner user_input = new Scanner(System.in);
        Scanner userInput = new Scanner(System.in);

        //Enter Details For Movie 1
        System.out.println("Please Enter The Title Of Movie 1: ");
        title1 = input.next();
        System.out.println("Please Enter The Genre Of Movie 1: ");
        genre1 = user_input.next();
        System.out.println("Please Enter The Rating Of Movie 1: ");
        rating1 = userInput.nextInt();
        System.out.println(" ");

        //Enter Details For Movie 2
        System.out.println("Please Enter The Title Of Movie 2: ");
        title2 = input.next();
        System.out.println("Please Enter The Genre Of Movie 2: ");
        genre2 = user_input.next();
        System.out.println("Please Enter The Rating Of Movie 2: ");
        rating2 = userInput.nextInt();
        System.out.println(" ");

        //Enter Details For Movie 3
        System.out.println("Please Enter The Title Of Movie 3: ");
        title3 = input.next();
        System.out.println("Please Enter The Genre Of Movie 3: ");
        genre3 = user_input.next();
        System.out.println("Please Enter The Rating Of Movie 3: ");
        rating3 = userInput.nextInt();
        System.out.println(" ");

        //Set data for Movie one
        one.setTitle(title1);
        one.setGenre(genre1);
        one.setRating(rating1); 
        one.playIt();

        //Print data to screen
        System.out.println("Movie 1 Title = : " + one.getTitle());
        System.out.println("Movie 1 Genre = : " + one.getGenre());
        System.out.println("Movie 1 Rating = : " + one.getRating());        
        System.out.println(" ");

        //Set data for Movie two
        two.setTitle(title2);
        two.setGenre(genre2);
        two.setRating(rating2);
        two.playIt();

        //Print data to screen
        System.out.println("Movie 2 Title = : " + two.getTitle());
        System.out.println("Movie 2 Genre = : " + two.getGenre());  
        System.out.println("Movie 2 Rating = : " + two.getRating());        
        System.out.println(" ");

        //Set data for Movie three
        three.setTitle(title3);
        three.setGenre(genre3);
        three.setRating(rating3);
        three.playIt();

        //Print data to screen
        System.out.println("Movie 3 Title = : " + three.getTitle());
        System.out.println("Movie 3 Genre = : " + three.getGenre());    
        System.out.println("Movie 3 Rating = : " + three.getRating());  
        input.close();
        user_input.close();
        userInput.close();
        System.out.println(" ");


    }//end main method
}//end class
当我运行它时,我得到的是:

Please Enter The Title Of Movie 1: 
Step Brothers

Please Enter The Genre Of Movie 1: 
Comedy

Please Enter The Rating Of Movie 1: 
4

Please Enter The Title Of Movie 2: 

Please Enter The Genre Of Movie 2: 
Crime Comedy

Please Enter The Rating Of Movie 2: 
4

Please Enter The Title Of Movie 3: 
O Brother, Where Art Thou?

Please Enter The Genre Of Movie 3: 

Please Enter The Rating Of Movie 3: 
5

 - Now Playing

Movie 1 Title = : Step

Movie 1 Genre = : Comedy

Movie 1 Rating = : 4

 - Now Playing

Movie 2 Title = : Brothers

Movie 2 Genre = : Crime

Movie 2 Rating = : 4

 - Now Playing

Movie 3 Title = : O

Movie 3 Genre = : Comedy

Movie 3 Rating = : 5

您遇到的问题是,
Scanner
next()
方法只获取下一个标记,而不是整行。您需要
nextLine()
方法

我不知道你在课堂上是否已经做到了这一点,但通常你想使用
扫描器
和try-with-resources块。这将确保无论发生什么情况,您的
扫描仪
对象都是关闭的(这是在
最后
块中关闭它们的语法糖)

您也不需要为每个输入使用单独的扫描仪,尽管因为您将同时需要
readLine()
nextInt()
,所以您确实需要其中两个(
scanner
如果您在使用
nextInt()
之后尝试
readLine()
)会出现问题

通过不使用循环,您也在艰难地完成任务。当您使用for循环时,代码更简单、更短。您的老师要求您使用数组和for循环,但没有向您解释如何使用它们?难道没有课本或课堂笔记可以参考吗

import java.util.Scanner;

public class MovieTester {

    public static void main(String [] args){

        Movie[] movies = new Movie[3];

        try (Scanner string_input = new Scanner(System.in);
            Scanner int_input = new Scanner(System.in);) // Try with resources
        {
            for (int i = 0; i < 3; i++) {
                Movie movie = new Movie();

                // Enter Details For Movie
                System.out.println("Please Enter The Title Of Movie: ");
                movie.setTitle(string_input.nextLine());
                System.out.println("Please Enter The Genre Of Movie: ");
                movie.setGenre(string_input.nextLine());
                System.out.println("Please Enter The Rating Of Movie: ");
                movie.setRating(int_input.nextInt());
                System.out.println();

                movies[i] = movie;
            }

            // Play Movies
            for (int i = 0; i < movies.length; i++) {
                Movie movie = movies[i];

                System.out.println("Title: " + movie.getTitle());
                System.out.println("Genre: " + movie.getGenre());
                System.out.println("Rating: " + movie.getRating());
                movies[i].playIt();
                System.out.println();
            }
        }

    }//end main method
}//end class
import java.util.Scanner;
公映级电影{
公共静态void main(字符串[]args){
电影[]电影=新电影[3];
try(扫描器字符串输入=新扫描器(System.in);
Scanner int_input=new Scanner(System.in);//使用资源进行尝试
{
对于(int i=0;i<3;i++){
电影=新电影();
//输入电影的详细信息
System.out.println(“请输入电影标题:”);
movie.setTitle(string_input.nextLine());
System.out.println(“请输入电影类型:”);
movie.setgreen(string_input.nextLine());
System.out.println(“请输入电影分级:”);
movie.setRating(int_input.nextInt());
System.out.println();
电影,;
}
//播放电影
for(int i=0;i