获取java代码中的越界异常,需要帮助(begginer) 包hr.java.vjezbe.glavna; 导入java.math.BigDecimal; 导入java.util.Scanner; 导入hr.java.vjezbe.entitet.Artikli; 导入hr.java.vjezbe.entitet.Kategorija; 导入hr.java.vjezbe.entitet.Korisnik; 公共级格拉夫纳{ 私有静态最终整数BROJ_KORISNIKA=3; 私有静态最终整数BROJ_KATEGORIJA=3; 私有静态int n; 公共静态void main(字符串[]args){ Scanner skener=新扫描仪(System.in); Korisnik[]korisnici=新Korisnik[BROJ_KORISNIKA]; Kategorija[]kategorije=新Kategorija[BROJ_Kategorija]; Artikli[]Artikli=新Artikli[n]; for(int i=0;i>”; 字符串ime=skener.nextLine(); 系统输出打印(“Unesite prezime>>”; 字符串prezime=skener.nextLine(); 系统输出打印(“联合国网站电子邮件>>”; 字符串email=skener.nextLine(); 系统输出打印(“Unesite broj telefona>>”; String telefon=skener.nextLine(); korisnici[i]=新Korisnik(输入法、预输入法、电子邮件、电话); } 对于(int i=0;i>”; n=skener.nextInt(); skener.nextLine(); int计数器=0; 做{ 系统输出打印(“Unesite naslov artikla>>”; 字符串naslov=skener.nextLine(); 系统输出打印(“Unesite opis artikla>>”; 字符串opis=skener.nextLine(); 系统输出打印(“Unesite cijenu artikla(sa zarezom)>>”; BigDecimal cijena=skener.nextBigDecimal(); skener.nextLine(); artikli[n]=新的artikli(纳斯洛夫、奥皮斯、齐耶纳); 计数器++; }while(计数器 n = skener.nextInt();
我的代码有一个问题,在我输入名为cijena的价格后,它抛出一个越界异常。我不知道问题出在哪里,代码应该要求用户输入类别的数量,然后让用户输入并保存到数组中,然后保存到另一个名为kategorije的数组中。任何帮助都是好的建议获取java代码中的越界异常,需要帮助(begginer) 包hr.java.vjezbe.glavna; 导入java.math.BigDecimal; 导入java.util.Scanner; 导入hr.java.vjezbe.entitet.Artikli; 导入hr.java.vjezbe.entitet.Kategorija; 导入hr.java.vjezbe.entitet.Korisnik; 公共级格拉夫纳{ 私有静态最终整数BROJ_KORISNIKA=3; 私有静态最终整数BROJ_KATEGORIJA=3; 私有静态int n; 公共静态void main(字符串[]args){ Scanner skener=新扫描仪(System.in); Korisnik[]korisnici=新Korisnik[BROJ_KORISNIKA]; Kategorija[]kategorije=新Kategorija[BROJ_Kategorija]; Artikli[]Artikli=新Artikli[n]; for(int i=0;i>”; 字符串ime=skener.nextLine(); 系统输出打印(“Unesite prezime>>”; 字符串prezime=skener.nextLine(); 系统输出打印(“联合国网站电子邮件>>”; 字符串email=skener.nextLine(); 系统输出打印(“Unesite broj telefona>>”; String telefon=skener.nextLine(); korisnici[i]=新Korisnik(输入法、预输入法、电子邮件、电话); } 对于(int i=0;i>”; n=skener.nextInt(); skener.nextLine(); int计数器=0; 做{ 系统输出打印(“Unesite naslov artikla>>”; 字符串naslov=skener.nextLine(); 系统输出打印(“Unesite opis artikla>>”; 字符串opis=skener.nextLine(); 系统输出打印(“Unesite cijenu artikla(sa zarezom)>>”; BigDecimal cijena=skener.nextBigDecimal(); skener.nextLine(); artikli[n]=新的artikli(纳斯洛夫、奥皮斯、齐耶纳); 计数器++; }while(计数器 n = skener.nextInt();,java,exception,indexoutofboundsexception,Java,Exception,Indexoutofboundsexception,我的代码有一个问题,在我输入名为cijena的价格后,它抛出一个越界异常。我不知道问题出在哪里,代码应该要求用户输入类别的数量,然后让用户输入并保存到数组中,然后保存到另一个名为kategorije的数组中。任何帮助都是好的建议 package hr.java.vjezbe.glavna; import java.math.BigDecimal; import java.util.Scanner; import hr.java.vjezbe.entitet.Artikli; import h
package hr.java.vjezbe.glavna;
import java.math.BigDecimal;
import java.util.Scanner;
import hr.java.vjezbe.entitet.Artikli;
import hr.java.vjezbe.entitet.Kategorija;
import hr.java.vjezbe.entitet.Korisnik;
public class Glavna {
private static final int BROJ_KORISNIKA = 3;
private static final int BROJ_KATEGORIJA = 3;
private static int n;
public static void main(String[] args) {
Scanner skener = new Scanner(System.in);
Korisnik[] korisnici = new Korisnik[BROJ_KORISNIKA];
Kategorija[] kategorije = new Kategorija[BROJ_KATEGORIJA];
Artikli[] artikli = new Artikli[n];
for (int i = 0; i < BROJ_KORISNIKA; i++) {
System.out.println("Unesite " + (i + 1) + ". korisnika:");
System.out.print("Unesite ime >> ");
String ime = skener.nextLine();
System.out.print("Unesite prezime >> ");
String prezime = skener.nextLine();
System.out.print("Unesite E-mail >> ");
String email = skener.nextLine();
System.out.print("Unesite broj telefona >> ");
String telefon = skener.nextLine();
korisnici[i] = new Korisnik(ime, prezime, email, telefon);
}
for (int i = 0; i < BROJ_KATEGORIJA; i++) {
System.out.println("Unesite naziv " + (i + 1) + ". kategorije: ");
String naziv = skener.nextLine();
System.out.print("Unesite broj artikala za tu kategoriju >> ");
n = skener.nextInt();
skener.nextLine();
int counter = 0;
do {
System.out.print("Unesite naslov artikla >> ");
String naslov = skener.nextLine();
System.out.print("Unesite opis artikla >> ");
String opis = skener.nextLine();
System.out.print("Unesite cijenu artikla (sa zarezom) >> ");
BigDecimal cijena = skener.nextBigDecimal();
skener.nextLine();
artikli[n] = new Artikli(naslov, opis, cijena);
counter++;
} while (counter < n);
kategorije[i]= new Kategorija(naziv, artikli);
}
skener.close();
}
}
这一行,您通过输入获取一个int值。比方说5;所以
n=5代码>
在这一行=>
n = skener.nextInt();
您正在尝试访问artikli[5]索引,但数组的大小为0。您在此数组之前启动了n=0,因为您没有初始化“n”,未初始化的int变量默认为0=>
artikli[n] = new Artikli(naslov, opis, cijena);
首先必须将数组初始化为适当的大小,然后才能访问Artikli[n]索引
快速解决方案:
private static int n; //which is 0 by dafault
Artikli[] artikli = new Artikli[n]; // creates an array named artikli of size 0
假设您的int输入将小于1000,以便您可以访问索引artikli[0到999]
我已经尽可能详细地解释了。如果您有任何疑问,请发表评论。您尚未声明n的值。您必须指定它,因为列表实际上不能为0。
这样做:
replace -> Artikli[] artikli = new Artikli[n];
with this-> Artikli[] artikli = new Artikli[1000];
错误,因为列表小于要给它的值
如果这对你有帮助,请投票支持我。我是新来的,希望有一些基本的声誉。谢谢你能通过发布一个和异常的完整stacktrace来改进这个问题吗?
private static int n = 3;
artikli[n] = new Artikli(naslov, opis, cijena);