Dezimal zu Dual mit R├╝ckgabewert

  • Themenstarter DerFragensteller
  • Beginndatum
Diskutiere Dezimal zu Dual mit R├╝ckgabewert im Java Basics - Anf├Ąnger-Themen Bereich.
D

DerFragensteller

Hallo alle zusammen­čĹő­čśä

Ich hoffe erstmal, dass ich dieses Thema auch in der richtigen Kategorie er├Âffne­čśů

Nun zu meinem Anliegen:
Ich m├Âchte eine Methode mit R├╝ckgabewert schreiben, die mir eine Dualzahl aus einer Dezimalzahl errechnet. Dazu habe ich bereits eine Methode geschrieben, die mir auch die gew├╝nschte Bildschirmausgabe liefert, jedoch habe ich noch nicht ganz verstanden, wie die return-Anweisung funktioniert und wie ich darauf in meinem Beipspielprogramm zugreifen kann. Die return-Anweisung soll in diesem Fall die errechnete Zahl zur├╝ckgeben, was leider noch nicht der Fall ist.

Ich w├╝rde mich wirklich sehr freuen, wenn mir jemand in m├Âglichst leicht verst├Ąndlichen Worten (f├╝r Java Einsteiger­čśü) erkl├Ąren kann, inwieweit ich mein Programm bearbeiten muss. Optimal w├Ąre nat├╝rlich ein konkreter L├Âsungsvorschlag in Form eines m├Âglichst sehr einfachen Codes, der auch f├╝r mich verst├Ąndlich ist­čÖĆ, da ich momentan sonst einfach nicht mehr weiter komme.

Falls die Bilder nicht reichen, kann ich selbstverst├Ąndlich auch die Methode hier rein kopieren.

Vielen Dank im voraus f├╝r alle die mir zu Helfen versuchen­čśç.
 

Anh├Ąnge

T

temi

Falls die Bilder nicht reichen, kann ich selbstverst├Ąndlich auch die Methode hier rein kopieren.
Verwende bitte die Code-Tags: Die drei Punkte, rechts vom Smiley, danach Code und Java. Bilder sind eher ung├╝nstig.

Vielleicht l├Âst das dein Problem:
Java:
class Foo {
    // Methode, die einen Wert zur├╝ck gibt
    public int giveMeAFive() {
        return 5;
    }
}

Foo foo = new Foo(); // Instanz von Foo erzeugen

int theFive = foo.giveMeAFive(); // den R├╝ckgabewert einer Variablen zuweisen

System.out.println(theFive); // und ausgeben

// oder den R├╝ckgabewert direkt verwenden
System.out.println(foo.giveMeAFive());
Die Bildschirmausgaben in der Klasse solltest du dann nat├╝rlich entfernen.

Hinweis: Deine Methode ist statisch und kann damit direkt ├╝ber die Klasse aufgerufen werden. Allerdings sollte man "static" bis auf die main()-Methode vermeiden oder einen guten Grund daf├╝r haben.
 
Zuletzt bearbeitet:
mihe7

mihe7

jedoch habe ich noch nicht ganz verstanden, wie die return-Anweisung funktioniert und wie ich darauf in meinem Beipspielprogramm zugreifen kann. Die return-Anweisung soll in diesem Fall die errechnete Zahl zur├╝ckgeben, was leider noch nicht der Fall ist.
Dein return liefert das Array zur├╝ck. Womit hast Du denn nun genau ein Problem?
 
D

DerFragensteller

Ich m├Âchte das Array umgekehrt zur├╝ckgeben, damit die Dualzahl auch richtig ist. Wie kann ich dann die Bildschirmausgabe der zweiten for-Schleife durch Zugriff auf das return-statement ├╝ber mein Beipspielprogramm ersetzen?
Java:
public class Zahlensysteme {


    public static int[] dezimaldual (int i) {
   
    // Array der L├Ąnge 8 erstellen, in das die berechneten Werte eingef├╝gt werden
    int[] arr = new int[8];       
       
    // Umzurechnende Dezimalzahl in neuer Variabel speichern, um sie sp├Ąter unver├Ąndert auszugeben
    int dezimalzahl = i;
                   
    //  Pr├╝fen, ob die eingegebene Zahl zwischen 0 und 255 ist
    if (i < 0 || i > 255)
        {
            System.out.println("Falscher Wert. Eingabe muss zwischen 0 und 255 liegen.");
        }
   
    else {
    System.out.println("Umrechnung Dezimalzahl in Dualzahl:");
   
        do
        {           
            // Elemente in Array einf├╝gen
            for ( int j = 0 ; j < arr.length ; j++)       
                {
                    // Modulorechnung, um den Rest f├╝r die Dualzahlen zu berechnen
                    int rest = i%2;
                    i = i/2;
                    arr[j] = (int) rest;
                }
               
            // Array r├╝ckw├Ąrts auslesen und ausgeben
            System.out.print("Ergebnis: " + dezimalzahl + " = ");
            for ( int k = arr.length - 1; k >= 0 ; k--)   
            {
                System.out.print(arr[k]);
            }
        }
        while (i > 0);
        System.out.println();
        System.out.println();
    }
    return arr;
}
 
T

temi

Anstatt es in der zweiten Schleife auszugeben, musst du ein neues Array f├╝r den R├╝ckgabewert erstellen (mit den umgedrehten Werten), welches du am Ende dann zur├╝ckgibst. Oder verstehe ich dich falsch?
 
mihe7

mihe7

Wie kann ich dann die Bildschirmausgabe der zweiten for-Schleife durch Zugriff auf das return-statement ├╝ber mein Beipspielprogramm ersetzen?
Eine Bildschirmausgabe kannst Du nicht durch ein return ersetzen - das sind zwei v├Âllig verschiedene Dinge.

Wenn ich Dich richtig verstehe, willst Du zuerst arr umdrehen und das umgedrehte Array zur├╝ckgeben. Die Bildschirmausgabe (oder eine beliebige andere Weiterverarbeitung) w├Ąre dann Aufgabe des Aufrufers der Methode.
 
D

DerFragensteller

Anstatt es in der zweiten Schleife auszugeben, musst du ein neues Array f├╝r den R├╝ckgabewert erstellen (mit den umgedrehten Werten), welches du am Ende dann zur├╝ckgibst. Oder verstehe ich dich falsch?
Das w├Ąre tats├Ąchlich eine ├ťberlegung wert, danke!
 
sascha-sphw

sascha-sphw

Ist das eine ├ťbung?

Sonst k├Ânntest Du auch einfach
Java:
Integer.toBinaryString(42)
verwenden.
 
J

JennyL

Nicht allzu kompliziert machen:
Java:
	public static String binString(int x) {
		if (x < 0 || x > 255)
			throw new IllegalArgumentException();
		return IntStream.range(0, 8).map(i -> (x >> (7 - i)) % 2).mapToObj(Objects::toString)
				.collect(Collectors.joining());
	}
 
sascha-sphw

sascha-sphw

Nicht allzu kompliziert machen:
Java:
    public static String binString(int x) {
        if (x < 0 || x > 255)
            throw new IllegalArgumentException();
        return IntStream.range(0, 8).map(i -> (x >> (7 - i)) % 2).mapToObj(Objects::toString)
                .collect(Collectors.joining());
    }
Ich sch├Ątze jetzt mal grob, das er IntStream auch nicht nutzen darf.
 
D

DerFragensteller

Nicht allzu kompliziert machen:
Java:
    public static String binString(int x) {
        if (x < 0 || x > 255)
            throw new IllegalArgumentException();
        return IntStream.range(0, 8).map(i -> (x >> (7 - i)) % 2).mapToObj(Objects::toString)
                .collect(Collectors.joining());
    }
Das geht leider deutlich ├╝ber meine Java-kenntnisse hinaus­čśé
 
mihe7

mihe7

Im Prinzip genau so, wie Du Deine Ausgabe gemacht hast, nur dass Du statt der Ausgabe eben in das neue Array schreibst.
 
D

DerFragensteller

Im Prinzip genau so, wie Du Deine Ausgabe gemacht hast, nur dass Du statt der Ausgabe eben in das neue Array schreibst.
Ok danke, das habe ich jetzt gemacht.
Java:
...
// Neues Array r├╝ckw├Ąrts f├╝llen
            for ( int k = arr.length - 1; k >= 0 ; k--)  
            {
                array[7-k] = arr[k];
            }
           
           
        }
        while (i > 0);
    }
    return array;
Wie kann ich jetzt in meinem Beispielprogramm auf "return array" zugreifen?
Java:
import java.util.Scanner;

public class Beispielprogramm {

    public static void main(String[] args) {
       
        Scanner s = new Scanner(System.in);
        System.out.println("W├Ąhlen Sie eine Zahl zwischen 0 und 255:");
        int i = s.nextInt();
       
        Zahlensysteme.dezimaldual(array);
    }
}
"array" wird rot unterzeichnet
 
Thema: 

Dezimal zu Dual mit R├╝ckgabewert

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben