下午好,我有问题。在读取属性文件并将其传递给数组时,看起来重复该数组,直到您完成读取文档为止,如图所示
我应该从包含它们的txt文件中读取属性,并将艺术家的名称传递给大小为10的数组。
这里是程序使用的方法
/**
* Carga la información inicial del karaoke.
*/
private void cargarKaraoke() {
try {
Properties datos = new Properties();
FileInputStream in = new FileInputStream(RUTA_ARCHIVO);
datos.load(in);
in.close();
int numArtistas = Integer.parseInt(datos.getProperty("total.artistas"));
for(int i = 1; i <= numArtistas; i++) {
String nombre = datos.getProperty("artista" + i + ".nombre");
String categoria = datos.getProperty("artista" + i + ".categoria");
String imagen = datos.getProperty("artista" + i + ".imagen");
karaoke.agregarArtista(nombre, categoria, imagen);
int numCanciones = Integer.parseInt(datos.getProperty("artista"
+ i + ".total.canciones"));
for(int j = 1; j <= numCanciones; j++) {
String cancion = datos.getProperty("artista" + i + ".cancion"
+ j + ".nombre");
int duracion = Integer.parseInt(datos.getProperty("artista"
+ i + ".cancion" + j + ".duracion"));
String letra = datos.getProperty("artista" + i + ".cancion"
+ j + ".letra");
int dificultad = Integer.parseInt(datos.getProperty( "artista"
+ i + ".cancion" + j + ".dificultad"));
String genero = datos.getProperty("artista" + i + ".cancion"
+ j + ".genero");
String ruta = datos.getProperty("artista" + i + ".cancion"
+ j + ".ruta");
karaoke.agregarCancion(nombre, cancion, duracion, letra,
dificultad, genero, ruta);
}
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(this, "No fue posible cargar la información "
+ "inicial del karaoke " + e.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}
public void agregarArtista(String nombreArtista, String categoria, String imagen) {
for (int i = 0; i < artistas.length; i++) {
artistas[i] = new Artista(nombreArtista, categoria, imagen);
}
System.out.println(Arrays.toString(artistas));
}
public int agregarCancion(String nombre, int duracion, String letra, int dificultad,
String genero, String ruta) {
canciones.add(new Cancion(dificultad, duracion, genero, nombre, letra, ruta));
return 1;
}
但在测试时,图像的结果会出现。
我个人认为问题在于添加艺术家的方法,但我无法确定问题。
有没有人知道发生了什么?
答案 0 :(得分:0)
您可以将所有Artista对象保存在列表List<Artista> artistas = new ArrayList<Artista>()
中,并更改方法agregarArtista
以使用艺术家数据填充列表:
public void agregarArtista(String nombreArtista, String categoria, String imagen) {
artistas.add(new Artista(nombreArtista, categoria, imagen));
System.out.println(artistas);
}
如果您只想要前10名艺术家,那么您可以更改方法,如下所示:
public void agregarArtista(String nombreArtista, String categoria, String imagen) {
if (artistas.size() < 10) {
artistas.add(new Artista(nombreArtista, categoria, imagen));
}
System.out.println(artistas);
}
如果结果应该在数组中,那么您可以将List转换为数组,如下所示:
Artista[] artistasArray = artistas.toArray(new Artista[0]);