我有3個類,Movie
這是用來將Movie
對象添加到MovieDatabase
但它保持打印空。Java對象數組打印null?
當我添加2 Movies
它像第一個Movie
被刪除,它打印null
而不是。還有一種方法來檢查數組中的位置是否爲空,如果它爲空則不打印?
這裏是我Movie
類
public class Movie {
private String name;
private String director;
private double fileSize;
private int duration;
private int moviecount;
public Movie()
{
name = null;
director = "";
fileSize = 0;
duration = 0;
}
public void setName(String newName)
{
name = newName;
}
public String getName()
{
return name;
}
public void setDirector(String newDirector)
{
director = newDirector;
}
public String getDirector()
{
return director;
}
public void setfileSize(double newfileSize)
{
fileSize = newfileSize;
}
public double getfileSize()
{
return fileSize;
}
public void setDuration(int newDuration)
{
duration = newDuration;
}
public int getDuration()
{
return duration;
}
,在這裏我MovieDatabase
類:
public class MovieDatabase
{
private Movie[] mov;
private int i;
public int count=0;
public MovieDatabase()
{
mov = new Movie[4];
i=0;
}
public void addData(String name, String director, double fileSize, int duration)
{
for(int i=0; i<4; i++)
mov[i] = new Movie();
setData(mov[i],name,director,fileSize,duration);
i++;
count++;
}
private void setData(Movie m,String name, String director, double fileSize, int duration)
{
mov[i].setName(name);
mov[i].setDirector(director);
mov[i].setfileSize(fileSize);
mov[i].setDuration(duration);
}
public void printNames()
{
for (int i = 0; i < mov.length; i++)
{
System.out.println(mov[i].getName());
}
}
}
import java.util.*;
public class Interface {
Scanner console = new Scanner(System.in);
MovieDatabase m = new MovieDatabase();
private void run()
{
int option;
do{
System.out.print("Add Movie(0), Delete Movie(2),Show Movies(3),Movie Count(4) \n");
option = console.nextInt();
switch(option)
{
case 0: addMovie();
break;
case 3: printMovies();
break;
}
}
while(option!=9);
}
public static void main(String[] args){
Interface intFace = new Interface();
intFace.run();
}
public void addMovie()
{
String name, director;
double fileSize;
int duration;
System.out.println("Movie Name: ");
name = console.next();
System.out.println("Movie Director: ");
director = console.next();
System.out.println("Movie File Size: ");
fileSize = console.nextDouble();
System.out.println("Movie Duration: ");
duration = console.nextInt();
System.out.print("Movie Added!");
m.addData(name,director,fileSize,duration);
}
public void printMovies()
{
m.printNames();
}
}
我試圖只包括相關的部分,但什麼,我已經做了迄今有關居多。
您可以檢查該數組包含一個'null',但你在初始化你的'addData'空'Movie'對象。你還將'Movie'傳遞給'setData',但是你根本沒有使用傳入的對象,你只是直接訪問數組。退後一步,想想當你添加數據時你想要發生什麼(你可能不想創建很多空對象)。 – Kayaman
addData()和printNames()隱藏*'MovieDatabase'類中的字段'i''中的'for'循環中的局部變量'i'。字段'i'總是'0',所以對'setData()'的調用總是更新第一個'Movie'對象,而其他3則全部爲空名稱。 – Andreas