我可以尝试使用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;
}
}
请帮助我:(
答案 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
。