顯然,當我只使用引數化物件進行排序時,它會完美地執行,但是當我添加沒有資料的物件時,它就會發瘋。幫助。
順便說一句,我想要按“Stanje na racunu”或英文“your account balance”排序的降序資料,它采用物件類中的“stanje”變數并進行比較。我再重復一次。當不包括 tr1、tr2 和 tr3 時,這可以完美地作業。幫助
public class Glavna {
public static void sort(TekuciRacun[] racuni) {
TekuciRacun heljp = new TekuciRacun();
for ( int i = 0; i < racuni.length - 1; i )
for ( int j = 1; j < racuni.length; j )
if ( racuni[i].getStanje() > racuni[j].getStanje() ) {
heljp = racuni[i];
racuni[i] = racuni[j];
racuni[j] = heljp;
}
for ( int i = 0; i < racuni.length; i )
System.out.println("\n" racuni[i].toString());
}
public static void main(String[] args) {
TekuciRacun ptr1 = new TekuciRacun("Marko Sisovic", 29381024, 20000, 15000, 0, -10000);
TekuciRacun ptr2 = new TekuciRacun("Petar Gojkovic", 12341234, 25000, 10000, 5000, -15000);
TekuciRacun ptr3 = new TekuciRacun("Milojko Marivic", 23455423, 30000, 20000, 15000, -30000);
TekuciRacun tr1 = new TekuciRacun();
TekuciRacun tr2 = new TekuciRacun();
TekuciRacun tr3 = new TekuciRacun();
TekuciRacun[] racuni = { ptr1, ptr2, ptr3, tr1, tr2, tr3};
sort(racuni);
}
}
這是結果。
Ime i prezime vlasnika: Milojko Marivic
Broj racuna: 23455423
Stanje na racunu: -5000 dinara <====this is the data that's used for sorting
Dozvoljen minus: -30000 dinara
Ime i prezime vlasnika: Petar Gojkovic
Broj racuna: 12341234
Stanje na racunu: 10000 dinara <====
Dozvoljen minus: -15000 dinara
Ime i prezime vlasnika: Marko Sisovic
Broj racuna: 29381024
Stanje na racunu: 5000 dinara <====
Dozvoljen minus: -10000 dinara
Ime i prezime vlasnika: null
Broj racuna: 0
Stanje na racunu: 0 dinara
Dozvoljen minus: 0 dinara
Ime i prezime vlasnika: null
Broj racuna: 0
Stanje na racunu: 0 dinara
Dozvoljen minus: 0 dinara
Ime i prezime vlasnika: null
Broj racuna: 0
Stanje na racunu: 0 dinara
Dozvoljen minus: 0 dinara
public class TekuciRacun implements IRacun{
private String vlasnik;
private int brojRacuna;
private int uplate;
private int isplate;
private int kredit;
private int dozvoljenMinus;
private int stanje = 0;
TekuciRacun(){
}
TekuciRacun (String vlasnik, int brojRacuna, int uplate, int isplate, int kredit, int dozvoljenMinus){
super();
this.vlasnik = vlasnik;
this.brojRacuna = brojRacuna;
this.uplate = uplate;
this.isplate = isplate;
this.kredit = kredit;
this.dozvoljenMinus = dozvoljenMinus;
this.stanje = stanje(uplate, isplate, kredit);
}
@Override
public int stanje(int uplate, int isplate, int kredit) {
return stanje = uplate - isplate - kredit;
}
@Override
public String toString() {
return "Ime i prezime vlasnika: " vlasnik
"\nBroj racuna: " brojRacuna
"\nStanje na racunu: " stanje(uplate, isplate, kredit)
" dinara \nDozvoljen minus: " dozvoljenMinus
" dinara\nKredit: " kredit;
}
public String getVlasnik() {
return vlasnik;
}
public int getBrojRacuna() {
return brojRacuna;
}
public int getUplate() {
return uplate;
}
public int getIsplate() {
return isplate;
}
public int getKredit() {
return kredit;
}
public int getDozvoljenMinus() {
return dozvoljenMinus;
}
public int getStanje() {
return stanje;
}
public void setVlasnik(String vlasnik) {
this.vlasnik = vlasnik;
}
public void setBrojRacuna(int brojRacuna) {
this.brojRacuna = brojRacuna;
}
public void setUplate(int uplate) {
this.uplate = uplate;
}
public void setIsplate(int isplate) {
this.isplate = isplate;
}
public void setKredit(int kredit) {
this.kredit = kredit;
}
public void setDozvoljenMinus(int dozvoljenMinus) {
this.dozvoljenMinus = dozvoljenMinus;
}
public void setStanje(int stanje) {
this.stanje = stanje;
}
}
所需的輸出是(不是完整的,只有名稱(vlasnik))
- 佩塔爾·戈伊科維奇
- 馬爾科·西索維奇
- 米洛伊科·馬里維奇
- 空值
- 空值
- 空值
編輯。除錯后(在兩個 for 回圈之間添加 println)我可以看到,在第一次“i”迭代之后,結果是完美的,但是,回圈繼續進行,它應該這樣做,但開始做一些它不應該做的事情。我想這超出了我的知識范圍,因為我想這是一些編譯器“問題”。
uj5u.com熱心網友回復:
您的回圈邏輯不正確。要進行正確的排序,內部回圈 ( j) 必須從當前i 1向上開始。相反,它每次都從 1 開始。當您只有 3 個元素時,您可能看不到問題。
基本上,它將已排序區域中的元素與未排序區域中的元素進行比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461577.html
上一篇:將CPRC 庫與OMNET 鏈接
