【发布时间】:2016-09-07 13:57:07
【问题描述】:
我对这段代码有一些问题。我需要: 询问姓名和客户上个月租借的电影数量。 一个数组是名字,一个二维数组是租借的电影数量 在上个月的第一列和客户的免费租赁数量 在第二列中得到(两次租金后,客户免费获得一份)。 显示免费租赁数量最多的客户,以及这个数量是多少。
import java.util.Scanner;
public class RentalStore
{
public static final int NAMES = 10; //ten clients
public static final int N_MOVIES = 10; //column with movies per client
public static final int F_MOVIES = 2; //is granted free movie rentals.
public static void ClientRegistration(String[] names, int[][] movies) {
Scanner sc = new Scanner (System.in);
for(int i=0; i< NAMES; i++) {
System.out.println("Type the name of the client " + i + " and the amount of movies: ");
names[i] = sc.next();
movies[i][0] = sc.nextInt();
}
for(int i=0; i<F_MOVIES; i++) {
movies[i][i] = movies[i][0]/2;
}
}
public static void main (String [] args) {
String[] names = new String[NAMES];
int[][] movies = new int[N_MOVIES][F_MOVIES];
Scanner sc = new Scanner (System.in);
ClientRegistration(names,movies);
int largest = 0;
for(int i=0; i<F_MOVIES; i++) {
if(movies[i][i] > largest) {
largest = movies[i][i];
}
}
for(int i=0; i<F_MOVIES; i++) {
if(movies[i][i] == largest) {
System.out.println("The client " + names[i] + " is entitled to " + largest + " movies.");
}
}
}
}
第二列将存储客户拥有的免费租金数量。但是如果我将 F_MOVIES 更改为 N_MOVIES,我会得到 ArrayIndexOutOfBoundsException。
【问题讨论】:
-
你正在迭代
movies[i][i],它被声明为int[][] movies = new int[N_MOVIES][F_MOVIES];,而i >= F_MOVIES你会得到ArrayIndexOutOfBoundsException现在你明白为什么了吗? -
是的,但我不知道如何让这个程序按预期工作。
标签: java multidimensional-array indexoutofboundsexception