text mit float ausgeben

  • Themenstarter Themenstarter Astror Enales
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

Astror Enales

Gast
hallo forum.

ich bin grad total verwirrt, weil diese sache hat bisher in allen sprachen funktioniert und auch mit ints und longs geht es.
also der fehler ist folgender:
MainScreen.java:89: cannot find symbol
symbol : method append(float)
location: class java.lang.StringBuffer
g.drawString("Banding -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].banding, 15, 40, 0);
Fatal Error: Unable to find method append
com.sun.kvem.ktools.ExecutionException

die variable
Code:
tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].banding
ist vom typ float.
wieso gibt er diesen fehler aus und macht es nicht?
 
> tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].banding

ist das Java-Code?
ich sehe nirgendwo einen append()-Aufruf,
die Fehlermeldung ist allerdings ziemlich eindeutig, und die Methode gibts schon..

compiliert bei dir
Code:
public class Test
{

    public static void main(String[] args)
    {
        StringBuffer b = new StringBuffer();
        float f = 4;
        b.append(f);
    }
}
?

wenn nein, dann weiß ich auch weiter,
wenn doch, dann macht dein Programm irgendwas anders
 
hmm? Sowohl StringBuffer als auch StringBuilder stellen append(float) zur verfügung, wüsste jetzt nicht direkt was da großartig schief laufen soll. Diese Exception erscheint mir dagegen unbekannt und dadurch ein wenig suspekt.

Könntest du ein paar zeilen code von der stelle zeigen, an der es stress geben soll?
Bzw. bist du dir sicher, dass das der StringBuffer aus der standardbibliothek ist, und nicht irgendeine spezielle implementierung von irgendwem für irgendwas anderes?
 
hier mal ein ausschnitt jetzt mit dem StringBuffer:

Code:
//options
StringBuffer b = new StringBuffer();
g.drawString("Bund  -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].Gbund, 15, 25, 0);
g.drawString("Banding  -> " + b.append(tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].banding), 15, 40, 0);
g.drawString("Verbunden  -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].bound, 15, 55, 0);
g.drawString("Tremolo  -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].tremolo, 15, 70, 0);
g.drawString("Palmmuting  -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].palmmuted, 15, 85, 0);
g.drawString("shortPick  -> " + tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].shortPick, 15, 100, 0);
//pointer
g.drawString(">", 5, 25 + optionsSelect * 15, 0);

er gibt immer noch diesen fehler aus:
MainScreen.java:91: cannot find symbol
symbol : method append(float)
location: class java.lang.StringBuffer
g.drawString("Banding -> " + b.append(tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].banding), 15, 40, 0);
 
Muss man nicht noch explizit casten ...

g.drawString("shortPick -> " + Float.toString(tab.takte[tab.taktSelect].taktParts[tab.partSelect].notes[noteSelect].shortPick), 15, 100, 0);

oder so
 
irgendwie mysteriös ???:L kannst du den fehler in einem kleineren compilierbaren beispiel reproduzieren?
Herumcasten sollte eigentlich nicht nötig sein... hmm?
 
Ist das ne MicroEdition auf nem Gerät das keine floats oder doubles kann, oder sowas? Kenne mich mit j2me nicht aus... Ist nur so ne Idee...

Grüße, Ebenius
 
hab jetzt mal ein kleineres sample geschrieben, welches den gleichen fehler ausspuckt:

Code:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class floattest extends MIDlet {
    float banding = 1;
    
    public floattest() {
      String text = "";
      text = "banding -> " + banding;
    }
    
    public void startApp() throws MIDletStateChangeException {
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) throws MIDletStateChangeException {
      notifyDestroyed();
    }
}

hier der fehler:
Building "floattest"
floattest.java:10: cannot find symbol
symbol : method append(float)
location: class java.lang.StringBuffer
text = "banding -> " + banding;
^
Fatal Error: Unable to find method append
com.sun.kvem.ktools.ExecutionException
Build failed
 
sowas doch immer als erstes erwähnen..

gibts also dort vielleicht nicht, dann wandel doch selber den float in String um,

edit: oh, bei String + float, das ist ja übel, aber wohl das gleiche Problem,
ob es für dieses Toolkit einen speziellen Compiler gibt, der das + anders übersetzt?
 
hm...okay...
wenn man bei wiki nach cldc nachsieht wird es dort auch erklärt das es bei cldc 1.0 keine floats gibt.
sowas blödes.
mit cldc 1.1 gibt es das ja wieder. dann werde ich wohl auf das umsteigen.

Wird dann wohl nicht mehr für so viele Handys kompatibel sein wie mit 1.0 oder?

auf jeden fall vielen dank für eure hilfe.
 
alles was aktueller ist wird später veralten, als das, was nicht mehr so ganz aktuell ist. Außerdem ist Zahl der Handys eh streng monoton steigend. Dann wirst du mit der neueren Version wohl mehr handys erwischen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben