Text in ein Rechenprogramm schreiben

Der Neuling

Mitglied
Hallo liebe Forumsgemeinde,

ich bin neu hier und, wie an meinem Nickname unschwer zu erkennen ist, ein absolut blutiger Anfänger im Umgang mit Java. Derzeit arbeite ich mich mit Hilfe eines Buches langsam vorwärts und hoffe nun auf eure Hilfe, weil ich ein Programm etwas erweitern will. Es handelt sich dabei um folgendes Programm:
[Java]public class Rechenarten
{
public static void main (String argv[])
{
int a,b,c;
a=5;
b=12;
c = a * b;
System.out.println(c);

}
}[/Java]

Dieses Programm gibt mir das Ergebnis der "c" Formel aus, sonst nichts. Nun würde ich gerne noch einen Text hinzufügen, dass ich am Ende z.B. diese Ausgabe erhalte: "a=5, b=12, c=a*b; c=[Formelergebnis]".

Könnt ihr mir sagen, wie ich das hinbekomme?

Vielen Dank für eure Hilfe.

Grüße

Der Neuling
 
Innerhalb von .println schreibst du einfach:
Java:
"a=" + a + ", b=" + b + ", c=a*b; c=" + c

Also .println mit einem so generierten (string concatenation) String aufrufen (actual parameter)
 
Indem du Strings verknüpfst ganz einfach zu machen:

Java:
System.out.println("a="+a+", "+"b="+b+", c=a*b; c="+c);

Alles was in " " steht ist ein String also Text, und dazwischen füge ich
mit + + eine variable ein, die dadurch automatisch in einen String umgewandelt wird.
(Ist ein automatisches umwandeln der Dateitypen, denke mal dass der Compiler
dort einem die Arbeit erleichtert)
 
Hallo ihr Zwei,

vielen Dank, kurz, prägnant, hilfreich. Kurzum: Vielen Dank.
Ich hätte noch eine kurze Frage. Wieso erhalte ich einen Fehler, wenn ich im oben genannten Programm "int" durch bspw. "byte" ersetze? Byte geht doch von -128 bis 127, das reicht für meine Rechenaufgabe doch völlig aus?

Viele Grüße

Der Neuling
 
kann es sein dass du Byte im quelltext nicht
Java:
byte
sondern
Java:
Byte
geschrieben hast?
 
Habe es eben nochmal getestet. Es ist exakt das gleiche Programm, wie in meinem ersten Post nur, statt "int" "byte". Als Fehler erhalte ich:
"Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - possible loss of precision required: byte found: int at Rechenarten.main(Rechenarten.java:8)
Java Result: 1"

Die Fehlermeldung hilft mir nur leider auch nicht weiter :-/
 
Zuletzt bearbeitet:
5 und 12 sind int-Literale. Von int nach byte wird nicht implizit konvertiert, weil Genauigkeit verloren gehen könnte... : Galileo Computing :: Java ist auch eine Insel - 2 Imperative Sprachkonzepte
Wenn er int durch byte ersetzt, sind 5 und 12 aber bytes. 😉
Der Grund, wieso das nicht funktioniert, ist ein anderer. Um die von dir verlinkte Insel zu zitieren: "Wenn Ganzzahl-Ausdrücke vom Typ kleiner int mit einem Operator verbunden werden, passt der Compiler eigenmächtig den Typ auf int an."
 
@buzz!dev: jo man, du hast es verstanden. aber jetzt halt dich bitte raus, nicht das es wieder so eine sinnlose diskussion wie gestern gibt, in der du meinst, irgendetwas verbessern zu müssen
 
Danke für die Hilfe, nur damit ich es richtig verstehe:
Weil meine Zahlen kleiner sind als Int, wandelt der Compiler sie automatisch in Int um (auch wenn ich vorher byte schreibe) und beschwert sich dann, dass, da es int Zahlen sind, eigentlich auch oben int und nicht byte stehen müsste???
 
Die arithmetischen Operationen +, -, * etc. sind für int definiert. Der Compiler wandelt automatisch (implizit) nach int um, allerdings nicht wieder automatisch zurück
 
diese Ausgabe erhalte: "a=5, b=12, c=a*b; c=[Formelergebnis]".

Könnt ihr mir sagen, wie ich das hinbekomme?

Man kann statt println auch printf nutzen.

Dann sieht das ganze so aus

Java:
  System.out.printf("a=%d, b=%d, c=a*b; c=%d %n", a, b, c);

Das %d steht für jeweils einen Platzhalter vom Typ Integer in Dezimalschreibweise.
Die Werte a, b, c werden der Reihe nach für die Platzhalter eingesetzt.

Das %n steht für einen Zeilenumbruch, der bei println schon automatisch dabei ist.
 

Zurück
Oben