Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Zahlenumrechner/Musterloesung: Unterschied zwischen den Versionen

K (fix alignment)
 
Zeile 2: Zeile 2:
  
 
== Lösung ==
 
== Lösung ==
<nowiki>
+
<pre>
 
/**
 
/**
 
  * @author Andy Gunschl (Freitagsrunde)
 
  * @author Andy Gunschl (Freitagsrunde)
 
  *  
 
  *  
  * Eure Lösung kann gut von unserer Abweichen und es gibt bestimmt auch schönere Lösungen.
+
  *         Eure Lösung kann gut von unserer Abweichen und es gibt bestimmt auch
  *
+
*        schönere Lösungen.
 +
  *  
 
  */
 
  */
public class Zahlenumrechner {
+
public class NumberConverter {
+
static char[] hexTabelle = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
static char[] hexTabelle = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+
 
 
 
public static void main(String[] args) {
 
public static void main(String[] args) {
 
 
System.out.println("----- SELF CHECK like BVG ;-) -----");
 
System.out.println("----- SELF CHECK like BVG ;-) -----");
+
 
System.out.println("dez: 52 --> binaer: "+dezimalNachBinaer(52));
+
System.out.println("dez: 52 --> binaer: " + dezimalNachBinaer(52));
System.out.println("dez: 654 --> hexadezimal: "+dezimalNachHexadezimal(654));
+
System.out.println("dez: 654 --> hexadezimal: " + dezimalNachHexadezimal(654));
System.out.println("binaer: 110100 --> dez: "+binaerNachDezimal("110100"));
+
System.out.println("binaer: 110100 --> dez: " + binaerNachDezimal("110100"));
System.out.println("hexadezimal: 28E --> dez: "+HexadezimalNachDezimal("28E"));
+
System.out.println("hexadezimal: 28E --> dez: " + HexadezimalNachDezimal("28E"));
+
 
 
System.out.println("----- Menu -----");
 
System.out.println("----- Menu -----");
 
System.out.println("Options:");
 
System.out.println("Options:");
Zeile 28: Zeile 27:
 
System.out.println("\t[3] binary to decimal");
 
System.out.println("\t[3] binary to decimal");
 
System.out.println("\t[4] hexadecimal to decimal");
 
System.out.println("\t[4] hexadecimal to decimal");
int option = Terminal.askInt("choose a option:\t");
+
System.out.println("choose a option: ");
String value = Terminal.askString("type value to convert:\t");
+
int option = Integer.parseInt(System.console().readLine());
+
System.out.println("type value to convert: ");
switch(option){
+
String value = System.console().readLine();
case 1: System.out.println("Result: "+dezimalNachBinaer(Integer.valueOf(value)));
+
 
break;
+
switch (option) {
case 2:System.out.println("Result: "+dezimalNachHexadezimal(Integer.valueOf(value)));
+
case 1:
break;
+
System.out.println("Result: " + dezimalNachBinaer(Integer.valueOf(value)));
case 3:System.out.println("Result: "+binaerNachDezimal(value));
+
break;
break;
+
case 2:
case 4:System.out.println("Result: "+HexadezimalNachDezimal(value));
+
System.out.println("Result: " + dezimalNachHexadezimal(Integer.valueOf(value)));
break;
+
break;
default:
+
case 3:
System.out.println("No valid option");
+
System.out.println("Result: " + binaerNachDezimal(value));
 +
break;
 +
case 4:
 +
System.out.println("Result: " + HexadezimalNachDezimal(value));
 +
break;
 +
default:
 +
System.out.println("No valid option");
 
}
 
}
 
}
 
}
+
 
public static String dezimalNachBinaer(int dezimal){
+
public static String dezimalNachBinaer(int dezimal) {
 
String binaer = "";
 
String binaer = "";
while(dezimal>0){
+
while (dezimal > 0) {
if(dezimal%2==0){
+
if (dezimal % 2 == 0) {
binaer = "0"+binaer;
+
binaer = "0" + binaer;
 
}
 
}
if(dezimal%2==1){
+
if (dezimal % 2 == 1) {
binaer = "1"+binaer;
+
binaer = "1" + binaer;
 
}
 
}
dezimal = dezimal/2;
+
dezimal = dezimal / 2;
 
}
 
}
 
return binaer;
 
return binaer;
 
}
 
}
+
 
 
/*
 
/*
 
* Diese Funktion ist bestimmt auch noch schöner zu lösen
 
* Diese Funktion ist bestimmt auch noch schöner zu lösen
 
*/
 
*/
public static String dezimalNachHexadezimal(int dezimal){
+
public static String dezimalNachHexadezimal(int dezimal) {
 
String hex = "";
 
String hex = "";
while(dezimal>0){
+
while (dezimal > 0) {
hex = hexTabelle[dezimal%16]+hex;
+
hex = hexTabelle[dezimal % 16] + hex;
dezimal = dezimal/16;
+
dezimal = dezimal / 16;
 
}
 
}
 
return hex;
 
return hex;
 
}
 
}
+
 
public static int binaerNachDezimal(String binaer){
+
public static int binaerNachDezimal(String binaer) {
 
int dezimal = 0;
 
int dezimal = 0;
 
char[] tokens = binaer.toCharArray();
 
char[] tokens = binaer.toCharArray();
//vorsicht wir muessen von hinten anfangen 2^0 usw.
+
// vorsicht wir muessen von hinten anfangen 2^0 usw.
 
double pow = 0;
 
double pow = 0;
for(int i = (tokens.length-1);i>=0;i--){
+
for (int i = (tokens.length - 1); i >= 0; i--) {
dezimal = dezimal + (Integer.parseInt(String.valueOf(tokens[i]))*(int)Math.pow(2, pow));
+
dezimal = dezimal
 +
+ (Integer.parseInt(String.valueOf(tokens[i])) * (int) Math
 +
.pow(2, pow));
 
pow++;
 
pow++;
 
}
 
}
 
return dezimal;
 
return dezimal;
 
}
 
}
+
 
public static int HexadezimalNachDezimal(String hex){
+
public static int HexadezimalNachDezimal(String hex) {
 
int dezimal = 0;
 
int dezimal = 0;
 
char[] tokens = hex.toCharArray();
 
char[] tokens = hex.toCharArray();
//vorsicht wir muessen von hinten anfangen 16^0 usw.
+
// vorsicht wir muessen von hinten anfangen 16^0 usw.
 
double pow = 0;
 
double pow = 0;
for(int i = (tokens.length-1);i>=0;i--){
+
for (int i = (tokens.length - 1); i >= 0; i--) {
 
int mul = 0;
 
int mul = 0;
for(int j = 0;j<hexTabelle.length;j++){
+
for (int j = 0; j < hexTabelle.length; j++) {
if(hexTabelle[j]==tokens[i]){
+
if (hexTabelle[j] == tokens[i]) {
 
mul = j;
 
mul = j;
break; // das break ist hier nicht schön aber somit vermeidet man dass das gesammte array durchlaufen wird da ja hier etwas passendes gefunden wurde
+
break; // das break ist hier nicht schön aber somit
 +
// vermeidet man dass das gesammte array durchlaufen
 +
// wird da ja hier etwas passendes gefunden wurde
 
}
 
}
 
}
 
}
dezimal = dezimal + (mul*(int)Math.pow(16, pow));
+
dezimal = dezimal + (mul * (int) Math.pow(16, pow));
 
pow++;
 
pow++;
 
}
 
}
 
return dezimal;
 
return dezimal;
 
}
 
}
 
 
}
 
}
</nowiki>
+
</pre>
  
 
== Kommentare ==
 
== Kommentare ==

Aktuelle Version vom 4. März 2013, 18:53 Uhr

Hinweis: Die Musterlösung kann von eurer Lösung abweichen, da es immer mehrere Varianten gibt ein Problem zu lösen. Im Zweifelsfall Fragt einen Tutor.

Lösung

/**
 * @author Andy Gunschl (Freitagsrunde)
 * 
 *         Eure Lösung kann gut von unserer Abweichen und es gibt bestimmt auch
 *         schönere Lösungen.
 * 
 */
public class NumberConverter {
	static char[] hexTabelle = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

	public static void main(String[] args) {
		System.out.println("----- SELF CHECK like BVG ;-) -----");

		System.out.println("dez: 52 --> binaer: " + dezimalNachBinaer(52));
		System.out.println("dez: 654 --> hexadezimal: " + dezimalNachHexadezimal(654));
		System.out.println("binaer: 110100 --> dez: " + binaerNachDezimal("110100"));
		System.out.println("hexadezimal: 28E --> dez: " + HexadezimalNachDezimal("28E"));

		System.out.println("----- Menu -----");
		System.out.println("Options:");
		System.out.println("\t[1] decimal to binary");
		System.out.println("\t[2] decimal to hexadecimal");
		System.out.println("\t[3] binary to decimal");
		System.out.println("\t[4] hexadecimal to decimal");
		System.out.println("choose a option: ");
		int option = Integer.parseInt(System.console().readLine());
		System.out.println("type value to convert: ");
		String value = System.console().readLine();

		switch (option) {
			case 1:
				System.out.println("Result: " + dezimalNachBinaer(Integer.valueOf(value)));
				break;
			case 2:
				System.out.println("Result: " + dezimalNachHexadezimal(Integer.valueOf(value)));
				break;
			case 3:
				System.out.println("Result: " + binaerNachDezimal(value));
				break;
			case 4:
				System.out.println("Result: " + HexadezimalNachDezimal(value));
				break;
			default:
				System.out.println("No valid option");
		}
	}

	public static String dezimalNachBinaer(int dezimal) {
		String binaer = "";
		while (dezimal > 0) {
			if (dezimal % 2 == 0) {
				binaer = "0" + binaer;
			}
			if (dezimal % 2 == 1) {
				binaer = "1" + binaer;
			}
			dezimal = dezimal / 2;
		}
		return binaer;
	}

	/*
	 * Diese Funktion ist bestimmt auch noch schöner zu lösen
	 */
	public static String dezimalNachHexadezimal(int dezimal) {
		String hex = "";
		while (dezimal > 0) {
			hex = hexTabelle[dezimal % 16] + hex;
			dezimal = dezimal / 16;
		}
		return hex;
	}

	public static int binaerNachDezimal(String binaer) {
		int dezimal = 0;
		char[] tokens = binaer.toCharArray();
		// vorsicht wir muessen von hinten anfangen 2^0 usw.
		double pow = 0;
		for (int i = (tokens.length - 1); i >= 0; i--) {
			dezimal = dezimal
					+ (Integer.parseInt(String.valueOf(tokens[i])) * (int) Math
							.pow(2, pow));
			pow++;
		}
		return dezimal;
	}

	public static int HexadezimalNachDezimal(String hex) {
		int dezimal = 0;
		char[] tokens = hex.toCharArray();
		// vorsicht wir muessen von hinten anfangen 16^0 usw.
		double pow = 0;
		for (int i = (tokens.length - 1); i >= 0; i--) {
			int mul = 0;
			for (int j = 0; j < hexTabelle.length; j++) {
				if (hexTabelle[j] == tokens[i]) {
					mul = j;
					break; // das break ist hier nicht schön aber somit
							// vermeidet man dass das gesammte array durchlaufen
							// wird da ja hier etwas passendes gefunden wurde
				}
			}
			dezimal = dezimal + (mul * (int) Math.pow(16, pow));
			pow++;
		}
		return dezimal;
	}
}

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)