Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取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 - Fatal编程技术网

获取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代码中的越界异常,需要帮助(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

我的代码有一个问题,在我输入名为cijena的价格后,它抛出一个越界异常。我不知道问题出在哪里,代码应该要求用户输入类别的数量,然后让用户输入并保存到数组中,然后保存到另一个名为kategorije的数组中。任何帮助都是好的建议

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);