我如何在Java中使用带有数组的获取设置代码

时间:2018-12-23 15:10:59

标签: java arrays class external getter-setter

我可以尝试使用set来获取带有数组的代码。 我的外部类数组代码

int dersNot [][];

我的外部类获得了设置代码的

public int getVizeNotu(int dersNo) {
    return dersNot[dersNo][0];
}
public void setVizeNotu(int dersNo) {
    vizeNot = dersNot[dersNo][0];
}

我想通过设置来获取值。我在外部类中创建了数组。因为这就是我们的要求。我需要使用get set获取在外部类中创建的数组的元素。

这些代码出现错误。 我收到的错误:http://prntscr.com/lymz2h

Main Line 52 :  `ogrenci1.setVizeNotu(VizeNot);`

External Class Line 28:  `vizeNot = dersNot[dersNo][0];`

我的班级代码

软件包ogrenci.bilgi.sistemi.pkg2;

import ogrenci.bilgi.sistemi.pkg2.Ogrenci;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class OgrenciBilgiSistemi2 {
    public static void main(String[] args) {
        Scanner Scan = new Scanner(System.in);
        // Değişkenler
        int ogrenciSayisi;
        String OgrenciNo;
        String OgrenciAd;
        String OgrenciSoyad;
        int DersSayisi;
        int VizeNot = 0;
        int FinalNot = 0;
        int dersNo;
        Ogrenci ogrenci1 = new Ogrenci();
        // Öğrenci ve Ders sayısı alınır 
        System.out.println("Öğrenci sayısını giriniz : ");
        ogrenciSayisi = Scan.nextInt();
        System.out.println("Ders sayısını giriniz : ");
        DersSayisi = Scan.nextInt();
        // HashMap Tanımı 
        Map<String, Ogrenci> ogrenciMap = new HashMap<String, Ogrenci>();
        // Öğrenci bilgileri alınır 
        for (int i = 0; i < ogrenciSayisi; i++) {
            System.out.println((i + 1) + ". Öğrencinin numarasını giriniz : ");
            OgrenciNo = Scan.next();
            System.out.println(OgrenciNo + ". Öğrencinin ismini giriniz : ");
            OgrenciAd = Scan.next();
            System.out.println(OgrenciNo + ". Öğrencinin soyismini giriniz : ");
            OgrenciSoyad = Scan.next();
            System.out.println("-----------------------------------------------------");
            System.out.println("-----------------------------------------------------");
            // Değerleri HashMap'e atama
            ogrenciMap.put(OgrenciNo, new Ogrenci(OgrenciNo, OgrenciAd, OgrenciSoyad));
        }
           // Vize ve Final notları 
           for (int m = 0; m < ogrenciSayisi; m++){
           for (int j = 0; j < DersSayisi; j++) {
               System.out.println("Lütfen " + DersSayisi + ". dersin vize notunu giriniz : ");
               VizeNot = Scan.nextInt();
               ogrenci1.setVizeNotu(VizeNot);
               System.out.println("Lütfen " + DersSayisi + ". final notunu giriniz : ");
               FinalNot = Scan.nextInt();
               ogrenci1.setFinalNotu(FinalNot);
           }
            }
        // Öğrenci bilgilerini yazdırmak
        for (Map.Entry<String, Ogrenci> entry : ogrenciMap.entrySet()) {
            System.out.println("Öğrenci numarası : " + entry.getKey() + "  Öğrenci bilgileri : " + entry.getValue().getOgrenciAd() + " " + entry.getValue().getOgrenciSoyad());
        }
    }
}

我的外部课程

    package ogrenci.bilgi.sistemi.pkg2;

public class Ogrenci {
    private String ogrenciNo;
    private String ogrenciAd;
    private String ogrenciSoyad;
    private int finalNot;
    private int vizeNot; 
    int dersNot [][];

    public Ogrenci(String ogrenciNo, String ogrenciAd, String ogrenciSoyad) {
        this.ogrenciNo = ogrenciNo;
        this.ogrenciAd = ogrenciAd;
        this.ogrenciSoyad = ogrenciSoyad;
    }

    public Ogrenci() {
    }
    // Getter and Setter Code's    
    // Vize Notu 
    public int getVizeNotu(int dersNo) {
        return dersNot[dersNo][0];
    }

    public void setVizeNotu(int dersNo) {
        vizeNot = dersNot[dersNo][0];
    }
    // Final Notu
     public int getFinalNotu(int dersNo)  {
        return dersNot[dersNo][1];
    }
    public void setFinalNotu(int dersNo) {
        finalNot = dersNot[dersNo][1];
    }
   // Ogrenci No
    public String getOgrenciNo() {
        return ogrenciNo;
    }

    public void setOgrenciNo(String ogrenciNo) {
        this.ogrenciNo = ogrenciNo;
    }
    // Ogrenci Ad
    public String getOgrenciAd() {
        return ogrenciAd;
    }

    public void setOgrenciAd(String ogrenciAd) {
        this.ogrenciAd = ogrenciAd;
    }
   // Ogrenci Soyad
    public String getOgrenciSoyad() {
        return ogrenciSoyad;
    }

    public void setOgrenciSoyad(String ogrenciSoyad) {
        this.ogrenciSoyad = ogrenciSoyad;
    }


}

请帮助我:(

1 个答案:

答案 0 :(得分:0)

由于没有在类中初始化derNot数组,所以出现异常。对其进行修复,然后查看程序提供的输出。

从构造函数中获取dersSayisi变量以初始化derNot数组。

public Ogrenci(String ogrenciNo, String ogrenciAd, String ogrenciSoyad, int dersSayisi) {
    this.ogrenciNo = ogrenciNo;
    this.ogrenciAd = ogrenciAd;
    this.ogrenciSoyad = ogrenciSoyad;
    dersNot = new int[dersSayisi][3]; // I assumed that 2 midterm exam(vize) 1 final exam
}

在主编辑中,以下行:

ogrenciMap.put(OgrenciNo, new Ogrenci(OgrenciNo, OgrenciAd, OgrenciSoyad, DersSayisi));

在下面的循环中犯下另一个错误,您只是改变一个对象而不是hashMap。您需要从哈希图中获取Ogrenci对象,并更改它的变量,而不只是一个对象。

for (int m = 0; m < ogrenciSayisi; m++) {
    for (int j = 0; j < DersSayisi; j++) {
        System.out.println("Lütfen " + DersSayisi + ". dersin vize notunu giriniz : ");
        VizeNot = Scan.nextInt();
        ogrenci1.setVizeNotu(VizeNot);
        System.out.println("Lütfen " + DersSayisi + ". final notunu giriniz : ");
        FinalNot = Scan.nextInt();
        ogrenci1.setFinalNotu(FinalNot);
    }
}

要解决此问题,您需要从HashMap获取Ogrenci对象,其键在您的情况下为ogrenciNo