Java :: Aufgabe #67

3 Lösungen Lösungen öffentlich

Zahlenausgabe in verschiedenen Schreibweisen

Anfänger - Java von pocki - 26.11.2014 um 11:53 Uhr
Schreibe ein Programm, welches eine positive Ganzzahl in dezimaler Schreibweise entgegen nimmt.
Gib diese Zahl dann in binärer, oktaler und hexadezimaler Schreibweise, ohne Verwendung der integrierten Formatierungsfunktionen, wieder aus.

Beispiel:

Konsolenausgabe:


Zahl eingeben: 365

binär: 101101101
oktal: 555
hexadezimal: 16D

Lösungen:

vote_ok
von ElPapito (2680 Punkte) - 05.05.2015 um 01:01 Uhr
Quellcode ausblenden Java-Code

/**
 * @author ElPapito
 * @date 05.05.2015
 */

import java.util.Scanner;

public class ZahlenausgabeInVerschiedenenSchreibweisen {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		System.out.print("Zahl eingeben: ");
		int decimal = scanner.nextInt();
		scanner.close();

		System.out.println("binär: " + convert(decimal, 2));
		System.out.println("oktal: " + convert(decimal, 8));
		System.out.println("hexadezimal: " + convert(decimal, 16));
	}

	public static String convert(int num, int base) {
		String str = "";

		while (num > 0) {
			int help = (num % base);

			if (help < 10) { // test if digit
				str = help + str;
			} else { // or letter
				str = (char) ('A' + help - 10) + str;
			}

			num = num / base;
		}
		return str;
	}

}

vote_ok
von nOrdan (1160 Punkte) - 09.06.2019 um 20:22 Uhr
Anmerkung: Habe noch Duodezimal hinzugefügt

Main-Klasse:

Quellcode ausblenden Java-Code


import Methodensammlung.Methoden;

/**
 * Umrechnung einer Zahl in Dezimalsystemschreibweise in binär,oktal,duodezimal und hexadezimal.
 * 
 * @author (nOrdan) 
 * @version (09.06.2019)
 */

public class Umrechner
{

    Methoden m = new Methoden();

    public static void main(String [] args)
    {
        Umrechner u = new Umrechner();
        u.inputs();
    }

    private void inputs()
    {
        boolean valid1 = false;
        int zahl = 0;
        while (valid1 == false)
        {
            String input1 = m.userInput("Geben sie eine Zahl in Dezimalschreibweise ein");
            m.errorIntInput(input1);
            try
            {
                zahl = m.parseInt(input1);
                valid1 = true;
            }
            catch(Exception e)
            {
                m.errorMessage("Invalid user input","Invalid input");
            }
        }    
        umrechnung(zahl);
    }

    private void umrechnung(int zahl)
    {
        m.informationMessage("10 wird im Duodezimalsystem als A und 11 als B dargestellt","Hinweis");
        String binaer = "";
        String oktal = "";
        String duodezimal = "";
        String hexadezimal = "";
        int ausgabeZahl = zahl;
        while (zahl > 0)
        {
            int rest = zahl % 2;
            zahl /= 2;
            binaer = rest + binaer;
        }
        zahl = ausgabeZahl;
        while (zahl > 0)
        {
            int rest = zahl % 8;
            zahl /= 8;
            oktal = rest + oktal;
        }
        zahl = ausgabeZahl;        
        while (zahl > 0)
        {
            int rest = zahl % 12;
            if (rest < 10)
            {
                duodezimal = rest + duodezimal;
            }
            else
            {
                duodezimal = (char) ('A' + rest - 10) + duodezimal;
            }
            zahl /= 12;
        }
        zahl = ausgabeZahl;
        while (zahl > 0)
        {
            int rest = zahl % 16;
            if (rest < 10)
            {
                hexadezimal = rest + hexadezimal;
            }
            else
            {
                hexadezimal = (char) ('A' + rest - 10) + hexadezimal;
            }
            zahl /= 16;
        }       
        m.informationMessage("In Binär entspricht " + ausgabeZahl + " der Zahlenfolge " + binaer + "\n" + "In Oktal entspricht " + ausgabeZahl + " der Zahlenfolge " + oktal + "\n" + "In Duodezimal entspricht " + ausgabeZahl + " der Zahlenfolge " + duodezimal + "\n" + "In Hexadezimal entspricht " + ausgabeZahl + " der Zahlenfolge " + hexadezimal,"Ergebnis");
    }
}





Die Methoden die ich aus meinem eigenem Methodensammlung package benutzt habe:

Quellcode ausblenden Java-Code

public String userInput(String message)
    {
        return JOptionPane.showInputDialog(message);
    }
    

public int parseInt(String input)
    {
        return Integer.parseInt(input);
    }

    public void errorIntInput(String input)
    {
        if (input == null) 
        {
            System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet
        }
        else if (input.isEmpty() == true)
        {
            //continue; wenn nötig
        }
    }

 public void errorMessage(String message,String errorName)
    {
        JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); 
    }
    
    public void informationMessage(String message,String informationName)
    {
        JOptionPane.showMessageDialog(null,message,informationName,JOptionPane.INFORMATION_MESSAGE);
    }

vote_ok
von paddlboot (3490 Punkte) - 10.07.2019 um 09:50 Uhr
Quellcode ausblenden Java-Code
import java.util.*;

public class verschZahlen {
	public static void main (String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("Zahl eingeben:\t");
		int zahl = scanner.nextInt();
		
		bin(zahl);
		oktal(zahl);
		hex(zahl);
		
		scanner.close();
	}
	
	public static void bin(int zahl) {
		String dual = "";
		
		while(zahl > 0) {
			dual += zahl % 2;
			zahl /= 2;
		}
		
		String ausgabe = "";
		
		for(int i = dual.length()-1; i >= 0; i--) {
			ausgabe += dual.charAt(i);
		}
		
		System.out.println("Binär: " + ausgabe);
	}
	
	public static void oktal(int zahl) {
		String okt = "";
		
		while(zahl > 0) {
			okt += zahl % 8;
			zahl /= 8;
		}
		
		String ausgabe = "";
		
		for(int i = okt.length()-1; i >= 0; i--) {
			ausgabe += okt.charAt(i);
		}
		
		System.out.println("Oktal: " + ausgabe);
	}
	
	public static void hex(int zahl) {
		String hex = "";
		
		while(zahl > 0) {
			int temp = zahl % 16;
			
			switch(temp) {
			case 10:
				hex += "A";
				break;
			case 11:
				hex += "B";
				break;
			case 12:
				hex += "C";
				break;
			case 13:
				hex += "D";
				break;
			case 14:
				hex += "E";
				break;
			case 15:
				hex += "F";
				break;
			default: 
				hex += temp;
				break;
			}
			zahl /= 16;
		}
		
		String ausgabe = "";
		
		for(int i = hex.length()-1; i >= 0; i--) {
			ausgabe += hex.charAt(i);
		}
		
		System.out.println("Hexadezimal: " + ausgabe);
	}
}