Datentypen JOptionPane

  • Themenstarter Themenstarter missmädchn7594
  • Beginndatum Beginndatum
M

missmädchn7594

Gast
Hallo leute,

ich möchte als ausgabe nicht System.out verwenden, sondern JOptionPane.showMessageDialog(null,...), allerdings gibt es keine reaktion, wenn ich die ausgabe ganz unten noch innerhalb der main methode platziere. was muss verändert werden damit dieses als ein fenster geöffnet wird?


Java:
public class Binary {

   public static void main(String[] args) {

       // Eingabe einer Zahl und die Anzahl der Nachkommastellen

       float zahl = Float.parseFloat(JOptionPane.showInputDialog("Bitte eine Zahl eingeben"));
       int stellen = Integer.parseInt(JOptionPane.showInputDialog("Nachkommastellen"));

       int laengeV=0;
       if(zahl<16){
          laengeV = 4;
       }
       else{
           if(zahl<256){                //<-- bestimmt die Feldlaenge der Vorkommastellen
               laengeV = 8;
           }
       else{
           if(zahl<4096){
               laengeV = 12;
           }
       else{
           if(zahl<65535){
               laengeV = 16;
           }
       else{
           if(zahl<1048576){
               laengeV = 20;
           }
       else{
           laengeV = 30;
       }}}}}


       int[] V = new int[laengeV];                      // Feld fuer Vorkammawert
       int[] N = new int[stellen];                      // Feld fuer Nachkommawert
        int i = V.length-1;                             //Variable fuer Vorkommawerte
        int k = 0;                                      //Variable fuer Nachkommawerte
        float zahlnach = (zahl - (int) zahl)*2;         // zahlnach ist die zahl nach dem komma

       while(zahl!=0){                                   // schleife fuer Vorkommawerte
            V[i] = (int) zahl%2;                         //  wenn zahl ungerade ist, dann wird in das Feld eine 1 sonst eine 0 geschrieben
            zahl =(int) zahl/2;                         // umrechnung in binärzahl
            i--;
        }
        
       System.out.print("Vektor enthält die Werte in folgender Reihenfolge:");

       i=0;
       while(i<V.length){           //{
       System.out.print(V[i]);      // Ausgabe aller Stellen (Felder) der Vorkammawerte
       i++;                         //
       }                            //{

       System.out.print(".");


       while(stellen!=0){           //schleife fuer nachkommawerte
           if(zahlnach < 1){        //{
               N[k]= 0;             //
           }                        //binaer nachkommaberechnung
           else{                    // nachkommazahl * 2 wenn zahl <1 dann wird eine 0 hingeschrieben, sonst eine 1
              N[k] = 1;             //
              zahlnach--;           //{
           }
           zahlnach = zahlnach * 2; // hier die berechnung nachkommazahl *2
           stellen--;
           System.out.print(N[k]);  // ausgabe Nachkommawert
           k++;
           System.out.println(V[i]+"."+N[k]);
       }

      
}
}
 
Java:
JOptionPane.showMessageDialog(null, "Kommatawerte");

Java:
JOptionPane.showMessageDialog(null, java.util.Arrays.toString(array));

Variablennamen, auch die von Arrays, übrigens immer klein und camelCase.
 
Java:
JOptionPane.showMessageDialog(null,"Vektor enthält die Werte in folgender Reihenfolge:"+V[i]+"."+N[k])

das hier möchte ich als ausgabewert, aber es wird mir nix angezeigt, wenn ich es wie gewohnt in der main methode platziere wie normalerweise. hab es schon probiert
 
Wird der Code überhaupt ausgeführt?

Ich meine bist du sicher dass der Code überhaupt an die Stelle gelangt, und nicht z.B durch eine if Bedingung an diese Stelle gar nicht gelangen kann.

Wenn du statt des JOptionPane ein Sysout machst wird dies ausgegeben?

wie startest du das Programm?
 
das ergebnis kommt bei sysout richtig raus, nun weiß ich aber ja nicht was verändert werden muss das Joption dies so erkennen kann, dass dort auch eine ausgabe erfolgt
 
nee gar nichts, auch kein syntax fehler

Soweit ich das im Schnelldurchlauf sehe, wird JOptionPane, wenn damit Zeile 47 ersetzt wird, angezeigt werden, weil es bis zur Ausführung von Zeile 47 keinen Fehler (Exception) und keine Endlosschleife geben wird. Also muss eine solche so ersetzte Zeile zwangsläufig erreicht werden. Entweder stellst du dich falsch an oder sagst nicht, wo der Schuh drückt ^^
 
ich brauch eine JOptionPane ausgabe, aber egal was ich mache ich weiß nicht was ich ändern muss damit das auch funktionieren kann.
insgesamt müsste das so sein das alle system.out entfallen müssen und die joption ausgabe allein erfolgen soll. was er aber einfach nciht tut
 
Brauchst du vielleicht sowas:
Java:
JOptionPane.showMessageDialog(null, "hallo!");

Also einfach nur ein Ausgabefenster ohne Inputfelder und andere Ja-Nein-Buttons?

Edit: seh gerade, hast du ja schon probiert… was klappt denn genau nicht?
 
und ich dachte ich hätte keine ahnung, aber jetzt mal ohne witz, ist das so schwierig zu sehen?
es gibt 2 eingabe werte, einmal für eine dezimal zahl und einmal wie viele nachkommastellen angezeigt werden sollen.
das ganze wird in eine binärzahl umgewandelt.
und diese zahl soll mit JOptionPane.showMessageDialog() ausgegeben werden, wie kann man das noch anders verstehen???
das einzige was ich nur hör ist nur blablabla
ihr könnte jez so viele kommentare abgeben wie ihr wollt, ich werde das eh nicht mehr lesen
danke für nix
 
Wow, so schnell so unfreundlich zu werden, obwohl hier alle nett gefragt haben und dir helfen wollten, ist schon ne reife Leistung :applaus:

Viel Spaß mit dieser Einstellung in deinem weiteren Leben.
 
@missmädchn7594
Fließkommazahlen werden eigentlich wie unter IEEE-754-Norm beschrieben gespeichert, d.h. mit einer GanzZahl, die mit eine Zweierpotenz multipliziert wird. Das ist eigentlich kein AnfängerThema mehr. Bei dir im Code wird abschnittsweise aber eine Zehnerzahl in eine Binärzahl umgerechnet und ausgegeben, was einfacher so ginge:
Java:
int i = ..;
int[] ia = new int[8];

if (i < 0 || i > 255) {
 .. shlecht
}

for (int j = 7; j >= 0; j--) {
 ia[7 - j] = i / (int) Math.pow(2, j);
 i = i % (int) Math.pow(2, j);
}

for (int j = 0; j < ia.length; j++) {
 System.out.print(ia[j]);
}
Entstehende Binärzahl wird von links nach rechts aufgeschrieben und ein so eine Zahl repräsentierendes Array muss dann angefangen bei größeren bis kleineren Indices befüllt werden.
 

Zurück
Oben