이 코드를 실행할 때 어떤 이유로 java.lang.ArrayIndexOutOfBoundsException : 10 오류가 발생합니다.java.lang.ArrayIndexOutOfBoundsException : 10 please please me
public class customerRecords
{
static Customer[] c = new Customer [10];
public static void main (String[] args) throws Exception
{
menu();
}
public static void menu() throws Exception
{
int option = 0;
String blank = "";
do
{
String stroption = "";
char choption = ' ';
option = 0;
System.out.println ("Main Menu\n1. Add New Customer Information\n2. View customer Records \n3. Exit");
System.out.println ("\n");
choption = (char) System.in.read();
while (choption >= '0' && choption <= '9')
{
stroption += choption;
choption = (char) System.in.read();
}
option = Integer.parseInt (stroption);
System.in.skip (1);
if (option == 1)
{
addNewCustomer();
blank = "";
option = -1;
}
else if (option == 2)
{
viewCustomerRecords (c);
blank = "";
option = -1;
}
else if (option == 3)
{
System.out.print ("\nGood Bye");
System.exit (0);
}
else
{
System.out.println ("The option that you have selected is sadly Invalid\nPlease reselect a new option");
blank = "";
option = -1;
}
}
while (option < 1 || option > 3);
}
public static void addNewCustomer() throws Exception
{
String name = "", phoneNumber = "", address = "", choice = "", strinfo = "", strnum = "";
char chname = ' ', chphone = ' ', chaddress = ' ', chinfo = ' ', chnum = ' ';
int num = 0, infonum = 0, phonenum = 0;
System.out.println ("\nEnter which customers information you would like to input between 1 and 10");
chinfo = (char) System.in.read();
while (chinfo >= '0' && chinfo <= '9')
{
strinfo += chinfo;
chinfo = (char) System.in.read();
}
infonum = Integer.parseInt (strinfo);
System.in.skip (1);
if (infonum > 10 || infonum < 1)
{
System.out.println ("The option that you have selected is invaild, please select one between 1 and 10");
infonum = 0;
addNewCustomer();
}
System.out.println ("\nEnter the customer " + (infonum) + "'s name");
chname = (char) System.in.read();
while ((chname >= 'A' && chname <= 'Z') || (chname >= 'a' && chname <= 'z') || (chname == ' '))
{
name += chname;
chname = (char) System.in.read();
}
System.in.skip (1);
System.out.println ("Enter customer " + (infonum) + "'s phone number");
chphone = (char) System.in.read();
while ((chphone >= '0' && chphone <= '9') || (chphone == '-') || (chphone == ' '))
{
phoneNumber += chphone;
chphone = (char) System.in.read();
}
System.in.skip (1);
System.out.println ("Enter customer " + (infonum) + "'s address");
chaddress = (char) System.in.read();
while ((chaddress >= '0' && chaddress <= '9') || (chaddress >= 'A' && chaddress <= 'Z') || (chaddress >= 'a' && chaddress <= 'z') || (chaddress == ' '))
{
address += chaddress;
chaddress = (char) System.in.read();
}
System.in.skip (1);
System.out.println ("Enter which service you would like to purchase. 1 = DialUp, 2 = Portable, 3 = Cable");
chnum = (char) System.in.read();
while (chnum >= '0' && chnum <= '9')
{
strnum += chnum;
chnum = (char) System.in.read();
}
System.in.skip (1);
num = Integer.parseInt (strnum);
if (num == 1)
{
c [infonum - 1] = new DialUp (name, phoneNumber, address, 18.99);
}
else if (num == 2)
{
c [infonum - 1] = new Portable (name, phoneNumber, address, 29.95, 5);
}
else if (num == 3)
{
c [infonum - 1] = new Cable (name, phoneNumber, address, 46.99, 4, 7);
}
else
{
System.out.println ("Invaild");
}
System.out.println ("\n");
menu();
}
public static void viewCustomerRecords (Customer[] c) throws Exception
{
String file = "";
char chfile = ' ';
int filenum = 0;
System.out.println ("Enter the record that you wish to access from 1 to 10.");
System.out.println ("Or enter 11 to display all files");
chfile = (char) System.in.read();
while (chfile >= '0' && chfile <= '9')
{
file += chfile;
chfile = (char) System.in.read();
}
System.in.skip (1);
filenum = Integer.parseInt (file);
if (c [filenum - 1] == null)
{
System.out.println ("This record is empty");
menu();
}
else if (filenum > 11 || filenum < 1)
{
System.out.println ("That is not a vaild option");
viewCustomerRecords (c);
}
else if (filenum > 0 && filenum < 11)
{
System.out.println ("Customer # " + filenum + "\n");
filenum--;
c [filenum].print();
menu();
}
if (filenum == 11)
{
for (int i = 0 ; i < c.length ; i++)
{
if (c [i] == null)
{
System.out.println ("File #" + (i + 1) + "is empty");
}
else
{
System.out.println ("\nCustomer # " + (i + 1) + "\n");
c [i].print();
}
}
menu();
}
}
}
예외가 발생한 곳을 찾기 위해 전체 코드로 이동하기를 원하십니까? 스택 트레이스는 어디에 있습니까? – Ouney
질문을 편집하여 전체 오류 메시지를 포함하십시오. – tbodt
그리고 이것은 디버깅하는 법을 배울 수있는 좋은 기회입니다. 사실 예외 메시지와 스택 추적을 확인하십시오. 그들은 실제로 문제가있는 곳과 그 원인에 대해 많은 것을 알려줍니다. 실제로 LOOK에 시간을 할애해야합니다. –