我有一个80行4列的csv.文件,它代表一个特定的电影商店。
- 第1列:idSale
- 第2集:电影
- 第三栏:类型
- 4td列:Director
该文件有一个包含上述名称的标题,其余行是内容。有79个销售,30部电影,10个导演和8个流派。在文件中,一部电影只有一个流派和一个导演。
电影、类型和导演都在重复。。只有ID是非重复值。
我已经通过计算行数和列数将csv文件放入了一个array2D中。2D数组称为movieCinema。
我已经设法将每一列存储到一个具有不可修复值的数组中,因为其中一项任务是打印电影、导演和流派。
我有3个重复值的数组,它们的名字如下:
- 电影
- 董事
- 体裁
这个数组的长度等于array2D-1中的行数(因为我没有存储头部)。
我有3个数组,不重复的值)
- moviesUnique(长度等于30)
- 控制器(长度等于10)
- 类型(长度等于8)
现在,最后一项任务是按导演克里斯托弗·诺兰的类型打印电影。范例:
克里斯托弗·诺兰
Genre:Action
- 电影1
- 电影5
类型:剧情
- 电影2
类型:Sy-fy
- 电影3
- 电影4
我做不到我可以打印所有的电影Chistopher Nolan和他的所有类型,但我不能把他的电影类型。
这是我搜索的函数:
public static String[] search (String[][] matrix, String searchItem, int searchCol, int indexCol) {
int arraySize = 0;
int index = 0;
String[] items;
// Compares each line (skip the header) that is equals to the max value and increases arraySize
for (int i=1; i<matrix.length; i++) {
if (searchItem.equals(matrix[i][searchCol])){
arraySize++;
}
}
// Declare array
items = new String[arraySize];
// Store all lines that has correspondence to the searchItem
for (int i=1; i<matrix.length; i++){
if (searchItem.equals(matrix[i][searchCol])){
items[index] = matrix[i][indexCol];
index++;
}
}
return items;
}
字符串
然后我有一个函数来存储一个名为uniqueValues的数组的唯一值,它工作得很好。
/**
* Function that removes the duplicates of an array and stores only the unique valus
* @param array
* @return
*/
public static String[] uniqueValues (String[] array) {
boolean duplicate;
int index=0;
int arraySize = 0;
for (int i=1; i<array.length; i++) {
duplicate = false;
for (int j=i+1; j<array.length; j++) {
if (array[i].equals(array[j]) && duplicate == false) {
duplicate = true;
}
}
if (duplicate == false) {
arraySize++;
}
}
String[] arrayUnique = new String[arraySize];
for (int i=1; i<array.length; i++) {
duplicate = false;
for (int j=i+1; j<array.length; j++) {
if (array[i].equals(array[j]) && duplicate == false) {
duplicate = true;
}
}
if (duplicate == false) {
arrayUnique[index] = array[i];
index++;
}
}
return arrayUnique;
}
型
因此,在主要调用函数:
String director = "Chistopher Nolan"
// This has movies and genres repeated
String[] directorGenresRepeated = search(movieCinema, director, 4, 3);
String[] diretorMoviesRepeated = Library.search(store, director, 4, 2);
// This has movies and genres non-repeated
String[] directorGenres = Library.uniqueValues(directorGenresRepeated);
String[] directorMovies = Library.uniqueValues(directorMoviesRepeated);
型
所以如果我用for来打印这个数组我得到了Chistopher Nolan的所有电影,我得到了Chistopher Nolan的所有类型的电影…它打印如下:
- 类型1
- 类型2
- 类型3
然后是电影:
1.电影1
1.电影2
1.电影3
1.电影4
1.电影5
但重点是要有:
Genre:Action
- 电影1
- 电影5
类型:剧情
- 电影2
类型:Sy-fy
- 电影3
- 电影4
我该怎么办??我不能使用列表或集合...或者散列表我只能使用数组,2个数组,for循环,while循环。
你能帮帮我吗?
2条答案
按热度按时间ygya80vv1#
1.查找与导演“Christopher Nolan”相关的所有独特类型,并将它们存储在数组directorGenres中。
1.对于directorGenres数组中的每种类型,查找与该类型和导演关联的所有电影并将其存储在单独的数组moviesByGenre中。3.打印每种类型的电影沿着类型标题。
供参考:
字符串
您可以在main方法中使用特定的director名称调用此函数,如下所示:
型
此功能将以所需格式打印给定导演的每个流派的电影。祝你好运!!!
3bygqnnd2#
感谢@janvi代码,我能够找到一个代码,把电影类型的特定导演。
字符串