webForumDet fria alternativet

Stack

Javaur Java

6 svar · 309 visningar · startad av Mannen

MannenMedlem sedan jan. 2003247 inlägg
#1

Hejsan
Har problem med Stack i Java,

Jag skapar stacken så här:

Stack s = new Stack();

och kör s.push(object) (alltid en siffra, men läses från en String array)

Men sedan vill jag föra över det som ligger längst upp (alltid en siffra) till en double typ, tex

double siffra;

siffra = s.pop()

Problemet är att s.pop() är ett object ?! Hur ska jag göra för att få allt till double, eller alla positioner i stacken till double. Vad som helst.

Tack på förhand.

Aleph_OneMedlem sedan juni 2003372 inlägg
#2

Vad är det för för objekt typ du pushar? Det är ingen siffra i form av int iallafall, för primitiva datatyper går inte att lägga i den stacken.

Du kan använda dig av Double för att lägga dit och plocka bort "siffror".

Stack s = new Stack();
Double five = new Double(5);
s.push(five);
System.out.println(s.pop());
MannenMedlem sedan jan. 2003247 inlägg
#3

Tack för det snabba svaret.

    strang = StringArray[0];
    Stack s = new Stack();
    double tempDouble;

        s.push(strang);

        tempDouble = s.pop();  // här dyker problemet upp
        System.out.print(s.pop());

Alltså problemet blir när jag poppar, vill ha ut det som en double.

Förstår ni hur jag menar?

Aleph_OneMedlem sedan juni 2003372 inlägg
#4

Du kan inte få ut en double direkt utan måste jobba med objekt mot stacken. Och då använda Double eller liknande.
Du kan göra så här tex

double d = ((Double)s.pop).doubleValue();

Ett annat alternativ är att du implementerar en egen stack som är mer anpassad till det du håller på med.

edit:
Ah såg nu att det är String objekt du lägger in.
för att få ut det som double kan du göra så här:

double d = Double.parseDouble((String)s.pop());
MannenMedlem sedan jan. 2003247 inlägg
#5

Jättetack för svaret, fungerade (tror jag ) :)

Men säg att jag tar emot värderna med pop() och lägger de i:
double d1 = Double.parseDouble((String)s.pop());
double d2 = Double.parseDouble((String)s.pop());

Jag vill sedan addera dessa två värden och lägga de i stacken igen (med push() ).

Hur skulle detta gå till?

pimmeMedlem sedan sep. 20011 086 inlägg
#6

s.push(Double.toString(d1+d2)); om du nu tvunget vill lagra String-objekt i stacken.

MannenMedlem sedan jan. 2003247 inlägg
#7

Jag tackar jättemycket för alla svar, blev till slut så att jag gjorde en egen array och lagrade allt där. Men jag har lärt mig nya saker så åter igen tack! :)

128 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)