我正在尝试接受多个用户输入(在这种情况下为字符串/名称),并将其存储到另一个类中的数组中
根据我的研究,许多建议使用列表而不是数组,但是在这种情况下,指定使用数组。
通过使用本来打算接收整数作为输入的代码,我能够解决问题,但是我已经进行了更改以接收字符串,但是,例如,在我输入的情况下,要输入3个名称,并且代码提示我输入名称,只允许输入2个
这是初始化数组的类
public class Movie {
private String id;
private String name;
private String description;
private String[] genre;
private String[] actors;
private String[] language;
private String countryOfOrigin;
private Map<String, Integer> ratings;
//Constructor
public Movie(String id, String name, String description, String[] genre, String[] actors, String[] language, String countryOfOrigin, Map<String, Integer> ratings){
this.id = id;
this.name = name;
this.description = description;
this.genre = genre;
this.actors = actors;
this.language = language;
this.countryOfOrigin = countryOfOrigin;
this.ratings = ratings;
}
//setters
public void setid(String id){
this.id = id;
}
public void setname(String name){
this.name = name;
}
public void setDescription(String description){
this.description = description;
}
public void setGenre(String[] genre){
this.genre = genre;
}
public void setActors(String[] actors){
this.actors = actors;
}
//getters
public String getId(){
return id;
}
public String getName(){
return name;
}
public String getDescription(){
return description;
}
public String[] getGenre(){
return genre;
}
public String[] getActors(){
return actors;
}
这是带有用于输入姓名的代码的主文件
public class Main{
public static void main(String[] args) {
//Scanner initialization
Scanner input = new Scanner(System.in);
System.out.println("How many actors star in this movie?: ");
int num = input.nextInt();
String array[] = new String[num];
System.out.println("Enter the " + num + " actors starred now");
for (int i = 0; i < array.length; i++){
array[i] = input.nextLine();
}
}
我的问题是我不确定是否需要先将值存储到本地数组“ array”中,然后将所述数组分配给类Movie actors数组,或者是否需要直接将值分配给类电影演员数组。如果是这样,我不确定该怎么做。
我的另一个问题是上面提到的一个问题,如果我输入了3个要存储的名称,则只能输入2个
答案 0 :(得分:0)
我的问题是我不确定是否需要先将值存储到 本地数组“ array”,然后将所述数组分配给Movie类 actors数组,或者如果我需要直接将值分配到 类Movie actors数组。如果是这样,我不确定该怎么做。
执行以下操作:
import java.util.Arrays;
import java.util.Scanner;
class Movie {
private String[] actors;
private String director;
private int year;
Movie() {
}
public Movie(String[] actors, String director, int year) {
this.actors = actors;
this.director = director;
this.year = year;
}
public String[] getActors() {
return actors;
}
public void setActors(String[] actors) {
this.actors = actors;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
@Override
public String toString() {
return "Movie [actors=" + Arrays.toString(actors) + ", director=" + director + ", year=" + year + "]";
}
}
public class Main {
public static void main(String[] argv) throws Exception {
// Scanner initialization
Scanner input = new Scanner(System.in);
System.out.print("How many actors star in this movie?: ");
int num = Integer.parseInt(input.nextLine());
String array[] = new String[num];
System.out.println("Enter the " + num + " actors starred now");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextLine();
}
System.out.print("Enter the name of the director:");
String director = input.nextLine();
System.out.print("Enter the release year:");
int year = Integer.parseInt(input.nextLine());
Movie movie1 = new Movie(array, director, year);
// Alternatively
Movie movie2 = new Movie();
movie2.setActors(array);
movie2.setDirector(director);
movie2.setYear(year);
// Display
System.out.println(movie1);
}
}
我的另一个问题是上述问题,如果我输入3个名字 要存储,它只允许我输入2
使用Scanner::nextLine
代替Scanner::nextInt
。您面临的问题是因为将int
输入之后的新行字符(Enter)分配给array[0]
。检查Scanner is skipping nextLine() after using next() or nextFoo()?了解更多信息。
示例运行:
How many actors star in this movie?: 2
Enter the 2 actors starred now
James
Bond
Enter the name of the director:Xyz
Enter the release year:2010
Movie [actors=[James, Bond], director=Xyz, year=2010]
答案 1 :(得分:0)
您可以通过多种方式解决此问题,因为您将数组参与者声明为私有,所以您将需要使用getter和setter方法来设置和获取数据。您还缺少构造函数。
public class Movie
{
private String[] actors;
public Movie(String[] actors)
{
this.actors = actors;
}
public String[] getActors()
{
return actors;
}
public void setActors(String[] actors)
{
this.actors = actors;
}
}
然后,您可以简单地创建一个新对象Movies并将其放入数组中,如下所示:
Movies movies = new Movies(array);
System.out.println(Arrays.toString(anime.getActors()));
将所有参与者存储在数组中。