2012-03-24 15 views
2

Das ist eine Art von Newb Frage, aber ich bin wirklich neu in der Programmierung und ich bin nur etwas mehr als eine Woche in einen Programmierkurs in Klasse 11. Wir benutze Java und arbeite mit Netbeans.Probleme mit double & Java.lang.String -Text Feldern

Was ich arbeite jetzt an, ist dies:

Während einer Sonderverkauf in einem Geschäft, ein Rabatt von 10% von Einkäufe über 10,00 $ genommen wird.

Erstellen Sie eine Anwendung, die den Benutzer für den Betrag von Käufe anfordert und gibt dann den Rabattpreis sowie den Rabattbetrag selbst zurück.

Mein Code:

DecimalFormat x = new DecimalFormat ("$###.00"); 
double purchases, discount, finalPrice; 
purchases = Double.parseDouble (purchaseInput.getText()); 
if (purchases >= 10) { 
    discount = purchases * 0.10; 
}  
else { 
    discount = 0; 
} 
finalPrice = purchases - discount; 
discountOutput.setText (discount); 
finalPriceOutput.setText (finalPrice); 

Das Problem ist, die letzten beiden Zeilen. Ich versuche, die Werte auf Textfelder festzulegen. Es sagt, dass es doppelt ist, aber braucht java.lang.String. Ich habe versucht, sie in eine Zeichenfolge mit double.toString() zu ändern, aber es besagt, dass das Doppel nicht dereferenziert werden kann. Ich bin gerade ziemlich verwirrt, bitte hilf mir.

Ich bin mir sicher, dass die Lösung nicht sehr kompliziert ist, aber ich habe jeden Inhaltsteil, den wir bisher gelernt haben, zweimal durchgesehen und finde immer noch nicht, wie ich mein Problem beheben kann.

+0

Willkommen bei SO. Ich fügte das "Hausaufgaben" -Tag hinzu, um anzuzeigen, dass dies Hausaufgaben sind. Für die Zukunft denken Sie bitte daran. – home

+0

Bitte streichen Sie Ihren Code für bessere Lesbarkeit in der Zukunft ein. Vermeiden Sie auch Großbuchstaben für Attribute, Parameter und Variablen - es ist nur eine Konvention, aber sehr hilfreich beim Lesen von Fremdcode. Großbuchstaben sind für Klassennamen und daher Konstruktoren begrenzt. Sehen Sie sich die Markdown-Editierhilfe an, die Sie in jedem größeren Bearbeitungsfeld in der oberen rechten Ecke finden. Fühl Dich willkommen. –

Antwort

2

Sie haben bereits eine DecimalFormat, um Doubles in Strings umzuwandeln. Also versuchen Sie dies:

DiscountOutput.setText(x.format(Discount)); 
FinalPriceOutput.setText(x.format(FinalPrice)); 

Sie es auch tun können DecimalFormat ohne, aber das Ergebnis wird etwas anders, weil die Zahlen nicht so formatiert sind "### $ 00.":

DiscountOutput.setText(Discount.toString()); 
FinalPriceOutput.setText(FinalPrice.toString()); 

Auch, als Vorschlag, denke ich, dass Geldmengen besser aussehen, wenn Sie "$#,##0.00" verwenden. Auf diese Weise haben Sie Tausende Trennzeichen (,) und Bruchteile eines Dollars zeigen sich wie $ 0,51 statt $ .51, die seltsam aussieht. So tun:

DecimalFormat x = new DecimalFormat ("$#,##0.00"); 
+0

Vielen Dank für Ihre Antwort. Ich glaube nicht, dass wir jemals gelernt haben, dass das Dezimalformat doppelt in Strings umgewandelt wurde, so dass es nützlich ist, es zu wissen. Das hat mein Problem perfekt gelöst.Danke für deine Hilfe und dafür, dass du nicht über die Newbie-Frage lachst. – IceMage88

2

: Schreibe:

DiscountOutput.setText(Double.toString(Discount)); 
FinalPriceOutput.setText(Double.toString(FinalPrice)); 

Denken Sie auch daran, dass in Java alle Variablen mit einem Kleinbuchstaben beginnen soll. Die Standardmethode zum Deklarieren der Variablen lautet:

+0

Vielen Dank für Ihre Antwort, ich erinnerte mich auch nicht daran, dass Variablen mit einem Kleinbuchstaben beginnen sollten, danke. – IceMage88

+0

@ IceMage88 Gern geschehen :) Wenn diese Antwort in irgendeiner Weise hilfreich für Sie war, denken Sie bitte über eine Upvote –

1

TextFields Methode setText akzeptiert immer nur String. Also, müssen Sie tun String.valueOf()

DiscountOutput.setText(String.valueOf(Discount)); 
FinalPriceOutput.setText(String.valueOf(FinalPrice)); 
+0

Ich wählte die Antwort von jemand anderem, aber deins half mir immer noch, da ich nicht wusste, dass dies der richtige Weg war, dies zu formatieren, Danke. – IceMage88

+0

OK. kein Problem. Vielen Dank – kandarp

Verwandte Themen