Erste Schritte Fehlermeldung warum?

konoha

Bekanntes Mitglied
Irgendeine Idee warum der Compiler rumspinnt? siehe Screenshot.
 

Anhänge

  • Unbenannt22222.png
    Unbenannt22222.png
    18 KB · Aufrufe: 18
  • compiler.png
    compiler.png
    30,9 KB · Aufrufe: 16

konoha

Bekanntes Mitglied
Ich möchte aber das die variable number durch die basis geteilt wird. wie bewerkstellige ich das`bitte unter den umständen?
 

Khal Drogo

Bekanntes Mitglied
Dann musst du halt so was wie
Java:
printNumberSystem(number / basis, basis);
schreiben, jedenfalls brauchst du für deine Methode zwei(!) Parameter, und nicht nur einen.

Mit freundlichen Grüßen
Xelsarion
 

konoha

Bekanntes Mitglied
Danke hat funktioniert! :)
Leider muss ich dich noch mit einer weiteren frage belästigen:
ich erhalte in meinem Programm zwei Ausgaben von zwei Methoden in einer Zeile. Kannst du mir bitte sagen wie ich ein Absatz zwischen den zwei Ausgaben setze?

für die Zahlen in der Main bekomme ich folgende Ausgabe: 101000100454
ich möchte jedoch das es wie folgt aussieht:
101000100
454

Java:
    public static void main (String [] args){
  
    printbinary(324);
    printNumberSystem(300, 8);
      
  
    }
  
    static String binärzahl = "";
  
    public static void printbinary(long number){
    
    if(number == 0){
        System.out.print(binärzahl);
     }
    else{
        binärzahl = (number%2)+binärzahl;
        printbinary(number / 2);
    }
  
}
    static String zahl = "";
  
    public static void printNumberSystem(long number, int basis){
      
    if (basis<=2 || basis >= 10)
       System.out.println("Die Basis darf nicht kleiner als 2 oder größer als 10 sein!");
     else
       if(number == 0){
        System.out.println(zahl);
     }
       else{
    
        zahl = (number%basis)+zahl;
        printNumberSystem(number / basis, basis);
    }
      
  
  
    }
  
  }
 

Khal Drogo

Bekanntes Mitglied
Entweder du schreibst System.out.println(); statt System.out.print();, oder du schreibst System.out.print("...\n");. Das \n bewirkt an dieser Stelle den Zeilenumbruch.

Mit freundlichen Grüßen
Xelsarion
 

konoha

Bekanntes Mitglied
In der folgenden Teilaufgabe wird nun verlangt, dass das Programm auch Zahlen von Dezimal nach hexadezimal umrechnen kann. Jetzt weiß ich nicht weiter. Wie kann ich denn für die Werte ab 9 die Buchstaben für 10-15 zuordnen?
Also
10=A
11=B
12=C
13=D
14=E
15=F
 

Khal Drogo

Bekanntes Mitglied
enums, konstante Arrays, selbstgeschriebene Methoden, ...
Da gibt es endlos viele Möglichkeiten, man muss einfach nur anfangen.

Mit freundlichen Grüßen
Xelsarion
 

konoha

Bekanntes Mitglied
hab mal das aus einem älteren Thread gefunden:
kannst du mir bitte erklären was die Zeile: singleLetter = String.valueOf((char) ('A' + rest - 10)); zu bedeuten hat? Was mich irritiert ist die -10 und das char, das gar nicht deklariert ist.

Java:
public static String convertToHex(int zahl) {
  //einzelne Stelle berechnen
  int rest = zahl%16;
  String singleLetter;
  if (rest < 10) {
    singleLetter = String.valueOf(rest);
  } else {
    singleLetter = String.valueOf((char) ('A' + rest - 10));
  }

  //und hier eben das Ergebnis einsetzen:
  if (zahl > 15) {
    return convertToHex(zahl / 16) + singleLetter;
  } else {
    return singleLetter;
  }
}
 

Khal Drogo

Bekanntes Mitglied
('A' + rest - 10) berechnet eine Zahl (welche genau, solltest du dir selbst überlegen).
(char) davor wandelt diese Zahl in einen char um (Stichwort: Type-Casting).
String.valueOf(...); "verwandelt" den Character in einen String, also 'A' wird zu "A".

Mit freundlichen Grüßen
Xelsarion
 

JStein52

Top Contributor
Probier es mal so:

Java:
    public static void printNumberSystem(long number, int basis) {

        String[] zeichenArray = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        if (basis < 2 || basis > 16) {
            System.out.println("Die Basis darf nicht kleiner als 2 oder größer als 10 sein!");
        } else if (number == 0) {
            System.out.print(zahl);
        } else {
            zahl = zeichenArray[(int)number % basis] + zahl;
            printNumberSystem(number / basis, basis);
        }
    }
 

Neue Themen


Oben