aldığım hata; Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ogrenci.dongu(ogrenci.java:36)
at MainMethod.main(MainMethod.java:8)
36. satırım;
public void dongu() {
for ( i = 0; i<ogrenci; i++) {
AdEkle();
ad [i] = input.next(); // 36. satırım burası
SoyAdEkle();
soyad [i] = input.next();
Not();
not [i] = input.nextInt();
}
}
büyük ihtimal hatanın kaynaklandığı yer, değişkenler kısmım;
public int ogrenci;
public String[] ad = new String[ogrenci];
public String soyad [] = new String [ogrenci];
public int not [] = new int [ogrenci];
public int i;
tüm class kodum bir arada
import java.util.Scanner;
public class ogrenci {
public int ogrenci;
public String[] ad = new String[ogrenci];
public String soyad [] = new String [ogrenci];
public int not [] = new int [ogrenci];
public int i;
Scanner input = new Scanner (System.in);
public void OgrenciSayisi() {
System.out.println("Öğrenci Sayısını Girin");
ogrenci = input.nextInt();
}
public void AdEkle() {
System.out.println("Öğrencinin Adını Giriniz");
}
public void SoyAdEkle() {
System.out.println("Öğrencinin SoyAdını Giriniz");
}
public void Not() {
System.out.println("Öğrencinin Not Giriniz");
}
public void dongu() {
for ( i = 0; i<ogrenci; i++) {
AdEkle();
ad [i] = input.next();
SoyAdEkle();
soyad [i] = input.next();
Not();
not [i] = input.nextInt();
}
}
public void siralama() {
for (int j = 0; j<not.length; j++) {
for (int k = 0; k < not.length; k++){
if (not[j] < not[k]) {
int buffer = not[j];
not[j] = not[k];
not[k] = buffer;
String buffer1 = ad[j];
ad[j] = ad[k];
ad[k] = buffer1;
buffer1 = soyad[j];
soyad[j] = soyad[k];
soyad[k] = buffer1;
}
}
}
}
public void gosterim () {for (int i = 0; i<ogrenci; i++) {
System.out.println(ad[i] + " " + soyad [i]+ " " + not[i]);
}}
}
main kodum
public class MainMethod {
public static void main(String[] args) {
ogrenci nesne = new ogrenci();
nesne.OgrenciSayisi();
nesne.dongu();
nesne.siralama();
nesne.gosterim();
}
}

public int ogrenci;
public String[] ad = new String[ogrenci];
public String soyad [] = new String [ogrenci];
public int not [] = new int [ogrenci];
burada ogrenci adında bir int oluşturmuşsun fakat buna herhangi bir değer atamadan listelerin büyüklüğünü bu değer olarak belirlemişsin. yani yapman gereken öğrenci sayısını aldıktan sonra bu listeleri oluşturmak.
yani bu kısmı şöyle değiştirmelisin:
public int ogrenci;
public String[] ad;
public String soyad [];
public int not [];
öğrenci sayısı fonksiyonu da şöyle olmalı:
public void OgrenciSayisi() {
System.out.println("Öğrenci Sayısını Girin");
ogrenci = input.nextInt();
ad = new String[ogrenci];
soyad = new String [ogrenci];
not = new int [ogrenci];
}
burada yaptığım şey önce öğrenci sayısını alıp daha sonra listeleri bu sayıya göre oluşturmak. başka hata var mı kontrol etmedim, varsa bakabilirim yine.


ogrenci değişkenine bir değer atamadığın için 0 kabul ediliyor, 0 elmanlı bir array'in de olmayan yerlerine değer atamaya çalıştığın için sana "array'ın dışına çıktın" hatası veriyor. Öğrenciyi tanımladığın yerde bir değer verirsen sıkıntı olmaz.


"@yasli ateist" ve "@gezegen olan pluton" cevabina ek olarak;
"public int ogrenci;" degeri programin maksimum kac ögrenci destekleyecekse o kadar deger olmali. Ama unutma ki "public String[] ad = new String[1000];" gibi bir array yaratirsan, hafizada 1000 ögrencilik alani kullanmasanda ayirir. Java da arraylar dinamik degildir. Dinamik ve kendiliginden büyüyen array yaratmak istersen ilerde mutlaka "ArrayList" konusuna bakmani tavsiye ederim.
