SteveL Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Πρώτα από όλα καλησπέρα... Έχω ένα παράξενο πρόβλημα στην μετατροπή float se String στην java. Το πρόβλημα είναι το έξης όταν γράφω αυτό >replayLog="ship:"+arena.ship.x+":"+arena.ship.y; το κείμενο μέσα στην replayLog είναι όπως πρέπει να είναι: "ship:1.21211:0.2341324"; Όμως όταν πάω να προσθέσω το κείμενο στο ήδη υπάρχον κείμενο >replayLog+="ship:"+arena.ship.x+":"+arena.ship.y; //replayLog->string //arena.ship.x->float //arena.ship.y->float Τοτε μέσα στην replayLog καταλήγει να είναι αυτό: "ship:0.0:0.0" δηλαδή οι αριθμοί μηδενίζονται έχω δοκιμάσει διαφορετικούς τρόπους όπως >replayLog=replayLog+"ship:"+arena.ship.x+":"+arena.ship.y; replayLog="ship:"+Float.toString(arena.ship.x)+":"+Float.toString(arena.ship.y); άλλα συμβαίνει το ίδιο... καμιά ιδέα ?
nexuss Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Μήπως το πρόβλημα υπάρχει από πιο πριν; Έχεις δοκιμάσει με μια println να δεις πόσο είναι το arena.ship.x πριν το χρησιμοποιήσεις για να αλλάξεις την τιμή του replayLog;
SteveL Δημοσ. 7 Νοεμβρίου 2011 Μέλος Δημοσ. 7 Νοεμβρίου 2011 Ναι το έχω δοκιμαση ηδη , και αφού το replayLog="ship:"+arena.ship.x+":"+arena.ship.y δουλευη κανονικά δεν νομίζω οι μεταβλητές μου να είναι στην πραγματικότητα 0.0
ΠάρηςΓ Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Μπας και ειναι null στην αρχη; Βαλε μας το κωδικα σου..
SteveL Δημοσ. 7 Νοεμβρίου 2011 Μέλος Δημοσ. 7 Νοεμβρίου 2011 Δεν ειναι null To πρόβλημα φαίνεται να είναι στο ότι πρόσθετο το κείμενο στο κείμενο που υπαρχή ήδη(με το +=) , άλλα γιατί? αυτός είναι ο κώδικας μου > public class ReplaySave { String replayLog=""; Arena arena; public ReplaySave(Arena arenai) { arena=arenai; replayLog=""; } int frame=0; public void Refresh() { replayLog+="ship:"+arena.ship.x+":"+arena.ship.y; //Tools.con("ship:"+arena.ship.x+":"+arena.ship.y); // auto einai kati san to println kai doulevi kanonika vgazontas tous sostous arithmous replayLog+="^"; frame++; if(frame>60) { Tools.con(replayLog); } } } EDIT: Hmm γίνεται όλο και πιο παράξενο οταν γραφω > float aa=1.21432432f; float aa2=1.267176843452432f; replayLog+="ship:"+aa+":"+aa2; Το replayLog εχει κανανικα τους σωστούς αριθμούς(αα , αα2) δηλαδή το πρόβλημα είναι στις τιμές των μεταβλητών arena.ship.x kai arena.ship.y οι οποίοι παρεμπίπτοντος είναι αυτοί 1.21433244 , 1.2671769 όποτε και το μέγεθος τους δεν είναι πρόβλημα
nexuss Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Δοκίμασε να βάλεις σε παρένθεση το arena.ship.x. Δες επίσης αν δουλεύει το εξής: String str1 = arena.ship.x; String str2 = arena.ship.y; replayLog+= (str1 + str2);
ΠάρηςΓ Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Σιγουρα αλλου ειναι το προβλημα σου.. Επισης μεγαλωνει πολυ το String με το += και θα βλεπεις την αρχη μετα μαλλον
SteveL Δημοσ. 7 Νοεμβρίου 2011 Μέλος Δημοσ. 7 Νοεμβρίου 2011 Δοκίμασε να βάλεις σε παρένθεση το arena.ship.x. Δες επίσης αν δουλεύει το εξής: String str1 = arena.ship.x; String str2 = arena.ship.y; replayLog+= (str1 + str2); Μπα τίποτα από τα δυο δεν δουλευη Σιγουρα αλλου ειναι το προβλημα σου.. Επισης μεγαλώνει πολυ το String με το += και θα βλεπεις την αρχη μετα μαλλον Μου φαίνεται πως θα πρέπει να βρω κάποιον άλλο τρόπο .Γιατί και εδώ που τα λέμε String σε παιχνίδι στην java δεν είναι και το καλύτερο (χάρης στον gc) πάντως θα σκάσω αν δεν μάθω τη πάει στραβά
nexuss Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Αν δοκίμαζες και με τη μέθοδο concat(String str);
SteveL Δημοσ. 7 Νοεμβρίου 2011 Μέλος Δημοσ. 7 Νοεμβρίου 2011 Αν δοκίμαζες και με τη μέθοδο concat(String str); Πάλι το ίδιο γίνεται > String temp=""; temp=temp.concat("ship:"+arena.ship.x+":"+arena.ship.y); Tools.con(temp);// <- Βγάζει τους πραγματικούς αριθμούς replayLog=replayLog.concat(temp); Tools.con(replayLog);// <- Όταν το βάζω με το άλλο κείμενο τότε βγάζει μηδενικά αντί για τους αριθμούς
ΠάρηςΓ Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Καπου αλλου ειναι το προβλημα...Breakpoints δε βαζεις;; System.err , logging σου λενε τπτ;
SteveL Δημοσ. 8 Νοεμβρίου 2011 Μέλος Δημοσ. 8 Νοεμβρίου 2011 AAAAAAAAA Έβαλα Breakpoints όπως πρότεινε ο Πάρης και είδα οτι το string είχε μέσα το σωστό κείμενο... Δικό μου το λάθος τελικά . Από το φαίνεται το logcat(που χρησιμοποιούσα για να δω τη περιεχέι η μεταβλητή) επερνε μόνο τους πρωτους 160 χαρακτήρες της μεταβλητής και τους τύπωνε ξανά και ξανά ώστε να συμπλήρωση τον πραγματικό αριθμό των χαρακτήρων. (μια από αυτές τις στιγμές που απορείς πως σου ξέφυγε αυτό ) Σας ευχαριστώ όλους για την βοήθεια
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα