如何使用get set code';Java中的数组
我可以尝试使用数组获取集合代码。 我的外部类数组代码如何使用get set code';Java中的数组,java,arrays,class,external,getter-setter,Java,Arrays,Class,External,Getter Setter,我可以尝试使用数组获取集合代码。 我的外部类数组代码 int dersNot [][]; 我的外部类获取设置代码 public int getVizeNotu(int dersNo) { return dersNot[dersNo][0]; } public void setVizeNotu(int dersNo) { vizeNot = dersNot[dersNo][0]; } 我想用get set获取值。我在外部类中创建了数组。因为这就是我们的要求。我需要使用get s
int dersNot [][];
我的外部类获取设置代码
public int getVizeNotu(int dersNo) {
return dersNot[dersNo][0];
}
public void setVizeNotu(int dersNo) {
vizeNot = dersNot[dersNo][0];
}
我想用get set获取值。我在外部类中创建了数组。因为这就是我们的要求。我需要使用get set获取在外部类中创建的数组的元素
这些代码中有错误。
我收到的错误是:
我的班级代码
包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());
}
}
}
请帮助我:(您遇到异常,因为您没有在类中初始化dersNot数组。请修复它并查看程序的输出 从构造函数中获取dersSayisi变量以初始化dersNot数组
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。您需要从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);
}
}
for(int m=0;m
要解决此问题,您需要从HashMap中获取Ogrenci对象,其密钥为
ogrenciNo
。您应该编写Ogrenci
和Ogrencibiligististemi2
类以及调用方类,如main。请查看并提供如何初始化dersNot
,这可能是空的,也可能是空的这就是空指针异常的原因。@EmreSavcı我不理解你的评论。@SMA我已经定义了courseNot数组。我用get set代码定义了值。@YılmazYaızDokumacı你必须在你的问题中复制并粘贴你的类代码。因此,任何想要重现你的错误的人都可以运行代码。我理解构造函数。。但是我没有将注释保留在hashmap中。它们将只保留在数组中。我尝试过。但是,在输入vize注释时再次出现错误。错误:您的setVizeNotu
方法不正确。您直接将其传递给dersNotu
。相反,您应该传递两个参数,第一个是dersNo
,这是数组的边界,第二个是分数。你需要重构你的方法、逻辑和循环。如果不麻烦的话,你能为setVizeNot写一个例子吗?我理解你说的,但我不能。如果你有固定的考试,比如说2个vize和1个final,你可以遵循以下步骤:setNot(int-dersKodu,int-examNumber,int-score)
.ExamNumber指定内部数组索引。Exampe:dersNot[1][2]=50,表示dersKod=1考试=2,分数=50。
ogrenciMap.put(OgrenciNo, new Ogrenci(OgrenciNo, OgrenciAd, OgrenciSoyad, DersSayisi));
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);
}
}