2016-04-14 8 views
-3

Grundsätzlich erstelle ich eine App, wo Benutzer wählen, Pass, Verdienst oder Auszeichnung für 18 verschiedene Einheiten (Schule im Grunde). Mein Problem ist, dass ich nicht herausfinden kann, wie man dem Spinner sagt, dass, wenn der String darin "Pass" ist, dieser String gleich der Ganzzahl 70 ist (Merit = 80 und Unterscheidung = 90). Ich verwende ein String-Array und Adapter für die Spinner. Ich versuche zur Zeit dies mit einer If-Anweisung zu tun:Telling String zu einem int in android Studio

if (spinner1.toString().equals("Pass")){} 

Ich habe keine Ahnung, was ich tun sollte der Zeichenfolge zu sagen, ein int zu entsprechen.

Um es zu wiederholen, ich Pass wollen = 70, Merit = 80, Distinction = 90.

jede Anleitung

und helfen auf diese sehr geschätzt wird. :)

+0

Suche nach 'HashMap' ... –

+0

Sie testen nur "Pass". Wo hast du 70, 80 oder 90? – Stultuske

+1

Sie sollten die Tutorials zu Typen nochmals lesen - es scheint hier ein Missverständnis zu geben, wie das Typsystem funktioniert. Wir können nicht sagen, was Sie versuchen zu tun, aber eine Zeichenfolge ist kein Int. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html –

Antwort

1

hoffe das hilft, es ist ein wenig vage ... Sie meinen, Sie haben ein paar Zeichenfolge < -> int Umwandlung zu tun?

public YourConstructor() { 
    /*Map<String, Integer>*/ theMap = new HashMap<String, Integer>(); 
    theMap.put("Pass", 10); 
    theMap.put("Merit", 70); 
    theMap.put("distinction ", 90); 
    ... 
} 

public int getNumber(String text) { 
    return theMap.get(text); 

    // I hope this will be, one day, forgotten. This is BAD. 
    //for (String s : theMap.keySet()) 
    // if (text.equals(s)) 
    //  return theMap.get(s); 
    // return 0; // default for "item not found", or throw 
} 

so final String yourString = ""+getNumber(spinner.getSelectedItem().toString());

Conversion :: String zu integer wird durch getan:

int integer = Integer.parseInt(text); 

integer zu String

String theString = ""+integer; 
+0

Ja, die Zeichenfolgen im Zahlenauswahlfeld müssen in Zahlen konvertiert werden, damit sie in einer Textansicht angezeigt werden können. Ich möchte immer noch, dass die Spinner die Strings weiterhin anzeigen, aber die Konvertierung in die Ints und das Tallying muss im Hintergrund erfolgen. Und ich habe versucht, was Sie gepostet, aber es gibt einen Fehler in der ersten Zeile, HashMap theMap = new HashMap () ;. Android Studio mag nicht , sagt Int kann nicht von einem primitiven Typ sein. –

+0

Warum erstellen Sie eine 'HashMap' und durchlaufen dann jedes Element? 'theMap.get (text)' würde tun (mit einer 'Null' Prüfung auf unbekannte Zeichenfolgen). Außerdem denke ich, dass Sie HashMap ', nicht' int 'brauchen. – TripeHound

+0

Ich habe nur primitiven Typ gegoogelt, sagte das gleiche, was Sie tripleHound für int/Ganzzahl getan haben. –

0

erstellen Karte wie unten:

Map<String,int> gradeScoreMap=new HashMap<String,int>(); 
gradeScoreMap.put("PASS",70); 
gradeScoreMap.put("MERIT",70); 
gradeScoreMap.put("DISTINCTION",70); 

Die obige Karte mit enthält die Zuordnung für Ihre Klasse mit Score

einen Getter für Map erstellen:

public String getgradeScoreMap(String grade) { 
return gradeScoreMap.get(grade); 
} 

das obige Verfahren verwendet wird, um die Punktzahl basierend auf einer Eingabe Klasse zu holen.

Jetzt verwenden:

int score=-1; 
if (spinner1.toString().equals("Pass")){ 
score =getgradeScoreMap(spinner1.toString()); 
} 

Die Punktzahl wird Ihr Gegenwert für "PASS" sein heißt 70

+1

Ich denke, Sie brauchen 'Map ' nicht 'int '. – TripeHound

+0

Dank Imran, leider public String getgradescoreMap (String grade) gibt einen Fehler zurück, wo es das Symbol –

+0

nicht auflösen kann Bitte teilen Sie Ihr Code-Segment und die genaue Fehlerbeschreibung. –