我剛開始使用Java,並開始練習編寫簡單的ATM程序。功能包括:Java在方法之間傳遞參數
- 記住所有者 - 檢查
- 開立帳戶,並可以直接存錢雖然構造 - 檢查
- 能取錢能夠存錢 - 檢查
- 能取消該帳戶,並有任何後續行動會遇到一個 拋出新的IllegalStateException - 檢查
- 在帳戶中最多可接受100.000美元,並告訴運營商他們是否試圖超過限制,他們可以多少存款直到他們在他們的極限 - 檢查(在某種程度上)
提示包括:人們希望看到他們的錢在100.00的形式,但是這是很糟糕在Java計算,所以保持機器內部在瑞士美分操作(Rappen酒店)和美元和美分的任何外部消息(即,雙)。 除了從美分轉換爲美元&美分之外,一切都工作正常。我決定在美分旁邊使用平行雙線,並調用一種方法,將美分轉換爲美元和美分,而不會覆蓋或更改「內部」計數。不幸的是,它似乎不想將參數成功傳遞給所提及的方法,因此不能正確地進行轉換。
在構造函數中,我想讓kontostandInFranken(美元和美分帳戶餘額)與kontostand(美分帳戶餘額)具有相同的權重,但已經在那裏我正在打牆。例如,戴夫開立一個賬戶,並立即在那裏存入25.50美元。當我在構造函數中運行該計算時,50美分將會丟失,因爲我必須將kontostandInFranken(以美元和美分的帳戶餘額)轉換爲int,然後才能將其乘以100,並使其等於kontostand(賬戶餘額以美分計)
/**
* @author ([email protected])
* @version (1.0)
*
* things that don't work:
* PASSING PARAMETERS BETWEEN METHODS. WHAT AM I DOING WRONG?
* CONVERTING BETWEEN RAPPEN AND FRANKEN & RAPPEN. ALWAYS ISSUES WITH DOUBLE VS. INTS
*/
public class Aufgabe2a
{
private int kontostand;
private double kontostandInFranken;
private String kontoInhaber;
private boolean kontoSaldiert;
/**
* Constructor
*/
public Aufgabe2a(String kontoInhaber, double kontostandInFranken)
{
this.kontoInhaber = kontoInhaber;
boolean kontoSaldiert = false;
this.kontostand = kontostand;
/**
*First issue. I can't seem to get the conversion from cents to dollars and *cents right
*/ kontostand = (int)kontostandInFranken * (int)100;
}
/**
* Ermöglicht Kontoeinzahlungen
*/
public int geldEinzahlen(int geldEingezahlt){
if(geldEingezahlt <=0){
System.out.println("Sie können nur positive Beträge einzahlen. Bitte versuchen Sie es erneut.");
return 0;
}
else if (kontoSaldiert == true){
kontoCheck();
}
else frankenInRappen(geldEingezahlt); //calling converting method here
if (kontostand + geldEingezahlt > 10000000){
System.out.println("Sie überschreiten mit dieser Einzahlung die Maximalhöhe von CHF 100.000. Sie können nur CHF " + kontostandInFranken(kontostand) +
(100000 - kontostandInFranken) + "einzahlen.");
}
else kontostand = (kontostand + geldEingezahlt);
return kontostand;
}
/**
* Ermöglicht Geld abzuheben
*/
public int geldAbheben(int geldAbgehoben){
if(geldAbgehoben <=0){
System.out.println("Sie können nur positive Beträge abheben. Bitte versuchen Sie es erneut.");
return 0;
}
else if (kontoSaldiert == true){
kontoCheck();
}
else frankenInRappen(geldAbgehoben);
if (kontostand - geldAbgehoben < 0){
System.out.println("Sie möchten zuviel Geld abheben. Sie können nur" + kontostand + "abheben.");
}
else kontostand = (kontostand - geldAbgehoben);
return kontostand;
}
/**
* Rechnet Rappen in Franken um - calculats cents into dollars and cents *ISSUE HERE
*/
private double rappenInFranken(double betrag){
double frankenBetrag = (betrag/100.0);
return frankenBetrag;
}
/**
* Rechnet Franken in Rappen um
*/
private int frankenInRappen(int betrag){
int rappenBetrag = (betrag*100);
return rappenBetrag;
}
/**
* Kontostand abfragen
*/
public void kontostandAbfragen(){
kontoCheck();
rappenInFranken(kontostand);
System.out.println("Kontoinhaber: " + kontoInhaber);
System.out.println("Kontostand: CHF " + kontostand +".-");
frankenInRappen(kontostand);
}
/**
* Konto Saldieren/Auflösen
*/
public void kontoSaldieren(boolean kontoSaldiert){
kontoCheck();
this.kontoSaldiert = kontoSaldiert;
System.out.println("Sie haben Ihr Konto aufgelöst. Bitte nehmen Sie den restlichen Kontostand an sich");
kontostand = kontostand - kontostand;
}
/**
* Überprüft ob das Konto saldiert ist
*/
private void kontoCheck(){
if (kontoSaldiert == true){
throw new IllegalStateException("Konto ist saldiert, keine weiteren Aktionen möglich.");
} else return;
}
/**
* Führt einen paralelen Kontostand in Franken
*/
private double kontostandInFranken(int kontostand){
kontostandInFranken = (kontostand/100.0);
return kontostandInFranken;
}
}
取美元金額乘以100,那麼53.27就變成5327.存儲爲整數。所有的數學都可以正常工作。必要時除以100,則5327再次變爲53.27。 – SnakeDoc