1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

[Java] Converter Dezimal -> Base 7 Fehler, Fehler, ...

Discussion in 'Programmieren' started by psychofreak, Aug 10, 2009.

Thread Status:
Not open for further replies.
  1. Code:
    public class convertme {
    	double number=28679718602997181072337614380936720482949.0;
    	double result=0.0;
    	ArrayList <double> rest = new ArrayList<double>();
    	while (number > 0.0) {
    		result = number % 7.0;
    		rest.add(result);
    		number = (number / 7.0)-(7 / result);
    		if(number < 7 && number > 0.0) {
    			result = number % 7.0;
    			rest.add(result);
    			number=0.0;
    		}
    	}
    	System.out.println(rest);
    }
    Tada, dieses Programm soll die Zahl number vom Dezimalsystem ins 7er-System umrechnen. Mein compiler zeigt mir 25 unmögliche Fehler an. Ich muss dazu sagen, dass ich noch nie mit ArrayList gearbeitet habe und nicht wirklich der Ehrfahrensten Programmierer bin. Verratet mir, wo mein(e) Fehler ist/sind und ich bin euch dankbar :D
     
  2. daboom

    daboom Megabyte

    W&#228;re vielleicht gut zu wissen, welche Fehler der Compiler genau schmei&#223;t.

    Eine Sache auf jeden Fall: In Java k&#246;nnen Typargumente nur Klassentypen sein, keine Primtive wie double, int, boolean usw. Java bietet aber die M&#246;glichkeit des Autoboxens in die entsprechenden Wrapper Klassen (also Double, Integer, Boolean usw.). Das hei&#223;t Du kannst die dann im Code genauso verwenden wie die Primitive.

    Zun&#228;chst solltest Du also, kurz gesagt, aus dem "double" im Typparameter der ArrayList ein "Double" machen.

    Als n&#228;chstes sein mal darauf hingewiesen, dass Du bei der deklarierten double Zahl "number" gewaltig an genauigkeit verlierst. Bedenke, dass Du bei doubles "nur" 52 bit Mantisse hast, was etwas 4,5E15 entspricht.

    Edit: Ich sehe gerade, dass Du den code einfach so in eine Klasse reingeschrieben hast, w&#228;re schon sch&#246;n (zwingend erforderlich ;)), wenn der in einer Methode stehen w&#252;rde, also sowas wie:

    Code:
    public class Convert {
      public static void convertme() {
        // Hier dann den Code von Dir rein
      }
    }
    
    Nochmal edit: Au&#223;erdem w&#252;rde ich Dich als Java Compiler hauen, wenn Du nen Klassennamen klein schreiben w&#252;rdest... ;)
     
    Last edited: Aug 10, 2009
  3. Also, da ich selbst mit double an Genauigkeit verliere, bringt mir das ganze Nichts, da ich die genaue Zahl brauche. Irgendwelche Vorschläge?

    Weiterhin habe ich festgestell, dass ich noch viieel lernen muss. Ich habe fast nichts bis zum Edit verstanden. Diese ganzen Schönheitsdinger in Java habe ich noch nie verstanden. ^^' Und ich schreibe meine Klassen immer klein, da ich sonst beim ganzen kompilieren usw. immer wieder auf die Shifttaste drücken müsste, was mir viel zu umständlich ist. :baeh::sorry:
     
  4. daboom

    daboom Megabyte

    Mit nem long bzw. Long wärst du also besser gefahren.

    BigInteger bzw. BigDecimal

    Ein fach mit nem String konstruieren. Der kann übrigens auch schon selbst die Umrechnung in ein anderes Zahlensystem.

    Ein einfacher Dreizeiler (fast ;)):

    Code:
    public class Convert {
      public static void convertme() {
        final BigInteger number = new BigInteger("28679718602997181072337614380936720482949");
    
        final BigInteger converted = new BigInteger(number.toString(7));
    
        System.out.println(number + " sieht im Septalsystem so aus: " + converted);
      }
    }
    
    Was meinst Du mit "Schönheitsdinger"?
     
  5. Mit Sch&#246;nheitsdinger meinte ich diesen ganze Kram von wegen Klassennamen gro&#223; schreiben, alles in eine Funktion schreiben, etc.

    Kann es sein, dass ich daf&#252;r irgentwas importieren muss? Mein Compiler findet BigInteger nicht.

    e: Ich habe gerade verstanden, was du mit "in eine Funkktion schreiben" meintest. Bei meinem ersten Versuch war ich niht mehr so ganz wach.

    Au&#223;erdem habe ich es hinbekommen nach ein paar kleinen &#196;nderungen.

    Danke f&#252;r die Hilfe.
     
    Last edited: Aug 11, 2009
Thread Status:
Not open for further replies.

Share This Page