String nach byte[]

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
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?

Schonmal Danke für die Hilfestellung!

Gruß!
 
:bahnhof: :bahnhof: :bahnhof:
Was willst Du?!? ???:L

Ordne mal die Fachbegriffe, mit denen Du (sinnfrei) um Dich wirfst, ich verstehe keinen Ton. :autsch:

Ark
 
Danke für den Tipp mit der Java API, hab da auch schon reingeguckt, habe aber leider keine Ahnung wie ich diese Methode implementiere.
 
Ich verstehe noch immer nichts. :shock:

Sag doch bitte jetzt genau:

1. Was gibt der Benutzer ein?
2. Was soll dem Benutzer anschließend ausgegeben werden?
3. Was kannst/darfst/willst/musst/sollst Du dafür verwenden?

MfG
Ark
 
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?

MfG

Patrick
 
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);
	}
}
So ungefähr?
 
Wow, danke für die schnelle und nette Antwort.

Kannst Du mir auch sagen, wie man ein Byte-Array zu einem String/Zeichenkette "castet" bzw. umwandelt?
 
Klar, wenn es das ist, was ich denke. :lol:

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. 😉

Mehr sage ich dazu aber nicht. ^^

Ark
 
immutable = unveränderbar

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.

Trotzdem danke und gute Nacht!
 
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??
 
Code:
//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);

:applaus: :applaus: :applaus:
 
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?
 
Habe mir mal meinen bisherigen Code:

Code:
public class Dezimalzahl {
    
    byte[] dezimalzahl;
    
    /**
     * Konstruktor
     */
    public Dezimalzahl(String ziffernfolge) {
    
        this.dezimalzahl = ziffernfolge.getBytes();
        
    }
    
    /**
     * addiere-Methode
     */
    public static Dezimalzahl addiere(Dezimalzahl zahl) {
        
        return;
        
    }
    
    /**
     * gibAlsString-Methode
     */
    public String gibAlsString() {
        
        String ziffernfolge;
    
        return ziffernfolge = new String(this.dezimalzahl);
        
    }
    
}

Also die "gibAlsString"-Methode funktioniert, nur die addiere-Methode (siehe meine Kommentar oben als Gast), noch nicht. Hat jemand einen Idee?[/code]
 
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);

Gruß Chris
 
Diese addiere-Methode gibt immer ein
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
zurück.

Code:
public class Dezimalzahl {
    
    byte[] dezimalzahl;
    
    /**
     * Konstruktor
     */
    public Dezimalzahl(String ziffernfolge) {
    
        this.dezimalzahl = ziffernfolge.getBytes();
        
    }
    
    /**
     * addiere-Methode
     */
    public Dezimalzahl addiere(Dezimalzahl zahl) {
        
        String ergebnis = "";
        int lange;

        laenge = dezimalzahl.length < zahl.dezimalzahl.length
                      ? zahl.dezimalzahl.length - 1
                      : dezimalzahl.length - 1;
        for (int zaehler = laenge ; zaehler > 0; zaehler = zaehler - 1) {
        if (dezimalzahl[zaehler] + zahl.dezimalzahl[zaehler] > 9) {
        int uebertrag = 1; }
       
        dezimalzahl[zaehler] = (byte)(dezimalzahl[zaehler] + zahl.dezimalzahl[zaehler]);
        }
        return new Dezimalzahl(ergebnis);
        
    }
    
    /**
     * gibAlsString-Methode
     */
    public String gibAlsString() {
        
        String ziffernfolge;
    
        return ziffernfolge = new String(this.dezimalzahl);
        
    }
    
}

Kann mir hier jemand helfen?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben