Hallo zusammen,
dies ist mein erster Beitrag und zugleich mein erster Schritt in die Java Welt. Bin echt ein totaler Anfänger und habe folgendes Problem.
Ich habe einen Konstruktor, der mir einen String von x Zeichen in ein Byte-Array umwandeln soll. Dieses Byte-Array soll mit einer anderen Zahl (auch Objekt des Klasse) addiert werden und schließlich wieder als String ausgegeben werden.
Hat jemand eine Lösung wie ich das bewerkstelligen kann? Meine Idee ist, dass ich jedes Zeichen des Strings (von vorne angefangen) jedem Element des Arrays mit einer for-Schleife zuweise. Danach wollte ich IM Array selbst die zu addierende Zahl mit der bereits vorhandenen im Array addieren. Ist hier auch ne for-Schleife günstig? Anschließend soll das ganze als String ausgegeben werden, indem ich wieder jedes Zeichen auslese und als String zusammenfasse.
Ich weiß, dass das mit Wrapper-Klassen bestimmt einfacher geht, aber das ist ne Übungsaufgabe und wir dürfen nicht alles benutzen...getBytes allerdings schon. Wie könnte den so ein getBytes-Ausdruck aussehen?
Der Benutzer soll gar nichts eingeben. Die Eingaben sind vorgegeben und werde im Code selber eingefügt. Zum Beispiel soll man ein Objekt für die Zahl 1 erzeugen und mit z.B. 9 (der Übergabeparameter) addieren.
Ist eine Aufgabe, die rein auf Methoden basiert.
- eine für den Konstruktor, durch den ein Objekt für eine als String übergebene Zeichenkette erzeugt wird
- eine für die Addition (mit einem Übergabeparameter), die die übergebene Zahl mit dem Objekt, das durch den Konstruktor erzeugt wird, addieren soll
- und eine Methode um die Darstellung der Zahl als Zeichenkette zu liefern.
Das Repertoire umfasst den Standardbereich , den man so aus dem Unterricht kennt (vor allembKonstrullstrukturen und sämtliche Methoden der Klasse String)
Ist die Idee mit getBytes() gar nicht mal schlecht?
Hm, also die Eingaben sind im Code festgeschrieben.
Ich kann jetzt nur erahnen, wie das Ganze aussehen soll …
Code:
public class IntWrapper{
int val;
public IntWrapper(String val){
this.val=Integer.parseInt(val);
}
public IntWrapper add(IntWrapper op){
val+=op.val;
return this;
}
public String toString(){
return Integer.toString(val);
}
}
Wenn man weiß, was “immutable” heißt und dass String immutable ist, wird die Sache ganz einfach: Du kannst den String nur genau so machen, also konstruieren, deshalb nennt sich diese (bzw. nennen sich diese) Methoden ja auch Konstruktoren.
Okay, ich werde mir deinen Tipp mal auf der Zunge zergehen lassen. Ich wusste zwar, dass ein String konstant ist, wusste aber nicht, ob ich hier selbst ne Methode schreiben muss, oder ob Java mir schon was liefert.
getBytes ist schon der richtige Weg, einen String in ein Byte-Array zu wandeln. Für den Rückweg - also die Methode, die eine String-Repräsentation liefert (dafür erbt deine Klasse von Object die Methode toString(), die du hier überschreiben solltest) - musst du wie oben geschriebne eine neue String-Instanz erzeugen; such dir also aus der API den passenden String-Konstruktor aus.
Aber: was bedeutet es, ein Byte-Array und eine Zahl zu addieren? Was soll dabei herauskommen??
//mach mir ein Byte Array, aber zackig
String blubber = "blablablubberherum";
byte[] b = blubber.getBytes();
//und nu wieder zurück zum String
String blubberPart2 = new String(b);
Mit der Addition meinte ich, die Zahl im Byte-Array mit einer anderen Zahl in einem anderen Byte-Array zu addieren und danach ein Byte-Array rauszubekommen. Sorry, wenn ich das nicht so treffen formuliere(n kann).
Aber danke für das Code-beispiel, werde das gleiich mal ausprobieren. Gruß!
Also in meinem Byte-Array sind doch Werte, oder? Wenn ich z.B ein Array der Länge 3 habe... 1 2 3. Diese "Zahl" also 123 will ich jetzt mir einem anderen Byte-Array, das z.B die Zahl "4 5 6", sprich 456 enthält, addieren. Verstehst Du was ich meine?
Du meinst dies oder :?:
Ein Bytearray in dem eine Zahl steht, diese wird in ein int umgewandelt und
nun kannst Du damit rechnen.
Also steht in dem Array a die Zahl "12307"
Und diese wandert in ein int namens inte.
Zwischendurch sind ein paar Ausgaben damit Du besser siehst was der Code macht.
Stichwörter hier sind : CASTEN, WERTIGKEIT im 10er System
Code:
byte[] a ={1,2,3,0,7};
int inte=0;
System.out.println("\n\n\n\n");
for(int i=a.length-1;i>-1;i--)
{
inte=(int) (inte+((int)a[i]*(Math.pow(10,i))));
System.out.print(" "+inte);
}
inte-=1; // Als Test -1 abziehen
System.out.println("\n\n\n\n"+inte);