2016-05-15 14 views
1

Ich entwickle eine App, in der ich ganzzahlige Werte zu verschiedenen Wortfolgen zuweisen muss. Zum Beispiel möchte ich folgendes zuweisen:Assign Integer Wert zu String

John = 2 
Good = 3 
Person= 7 

Jetzt sind diese John, Good und Person Strings, während 2,3 und 7 int Werte sind. Aber ich bin so verwirrt darüber, wie ich das umsetzen kann. Ich lese viele Dinge darüber, wie man int in string und string in int konvertiert, aber das ist ein anderer Fall.

Ich gebe Option zu Benutzer, um einen Text in editText einzugeben und wenn zum Beispiel Benutzer "Hallo John Sie sind eine gute Person" eingeben, dann wird diese Zeilenausgabe 12 sein, da alle drei Wörter John, Good und Person da sind im Eingabetext. Kannst du mir sagen, wie ich das erreichen kann? ich hier stecken bin, ist mein kleiner Code:

String s = "John"; 
int s_value= 2; 

jetzt ich diese 2 bis John zuweisen möchten, so dass, wenn Benutzereingaben geben und es enthält John dann 2 der Wert für John gezeigt. Bitte um Hilfe, da ich nur ein Anfänger-Programmierer sind

Hier ist mein Code (Edited)

String input = "John good person Man"; 
Map<String, Integer> map = new HashMap<>(); 
map.put("John", 2); 
map.put("Good", 3); 
map.put("Person", 7); 
//int number = map.get("Good"); 
String[] words = input.split(" "); 
ArrayList<String> wordsList = new ArrayList<String>(); 

for(String word : words) 
{ 
    wordsList.add(word); 
} 
for (int ii = 0; ii < wordsList.size(); ii++) { 
    // get the item as string 
    for (int j = 0; j < stopwords.length; j++) { 
     if (wordsList.contains(stopwords[j])) { 
      wordsList.remove(stopwords[j]);//remove it 
     } 
    } 
} 
for (String str : wordsList) { 
    Log.e("msg", str + " "); 

} 

Wie u i Code von Ihnen angewandt sehen und dann will ich meinen Haupt-String aufgeteilt werden, so dass jedes Wort Diese Zeichenfolge wird mit den Zeichenfolgen verglichen, die sich in der Karte <> befinden. Jetzt bin ich verwirrt, was man in der for Schleife schreibt ('stopwords' wird durch welches Ding ersetzt?)

+0

Sie können Klasse –

+0

Best Practice verwenden ist Enum zu verwenden (Aufzählungsdatentyp) –

Antwort

3

Sie können eine Map<String, Integer> verwenden Worte Zahlen zur Karte:

Map<String, Integer> map = new HashMap<>(); 
map.put("John", 2); 
map.put("Good", 3); 
map.put("Person", 7); 

und dann fragen Sie die Nummer gegeben ein Wort:

int number = map.get("John"); // will return 2 

UPDATE

Der folgende Code iteriert über eine Auflistung von Wörtern und die Werte addiert, die die Worte zum Spiel:

List<String> words = getWords(); 
int total = 0; 
for (String word : words) { 
    Integer value = map.get(word); 
    if (value != null) { 
    total += value; 
    } 
} 
return total; 
+0

Ok Sir Lemme diese eine überprüfen –

+0

kannst du bitte meinen editierten Beitrag überprüfen? Ich habe Ihre Methode nur benötigt, brauchen Sie wenig Anleitung in meiner endgültigen Ausgabe –

+0

Ich sehe, dass Sie die Karte erstellen, aber ich sehe Sie nicht verwenden. Ich bin mir auch nicht 100% sicher, was du erreichen willst. – Egor

0

Sie können String contains verwenden, um dies zu erreichen. Es folgt der Code:

String input = "John you are a good person"; 
String s1 = "John"; 
String s2 = "good"; 
String s3 = "person"; 
int totScore =0; 
if(input.contains(s1)) { 
    totScore=totScore+2; 
} 
else if (input.contains(s2)) { 
    totScore=totScore+3; 
} 
else if (input.contains(s3)) { 
    totScore=totScore+7; 
} 

System.out.print(totScore); 
+0

ok sir Lemme versuchen, diese –

0

ich ein Wörterbuch für diese verwenden würde. Sie können eine Zeichenfolge und einen int-Wert (oder einen anderen Wert) für diese Zeichenfolge hinzufügen.

Dictionary<string, int> d = new Dictionary<string, int>(); 
d.Add("John", 2); 
d.Add("Good", 3); 
d.Add("Person", 7); 
+0

Ok sir lemme check und wenn ich den Eingabetext mit diesen zugewiesenen Werten vergleichen will dann wie kann ich vergleichen? , d. H. John enthält 2 wie Sie erwähnt und wenn Benutzereingabe John ist gut dann wie kann ich diese Zeile mit dieser Wörterbuchzeile –

+0

Wörterbuch vergleichen? Sprechen wir noch Java? – Egor

+0

Sie können überprüfen, ob Ihr Wörterbuch Ihre Eingabe von Text wie folgt enthält: if (d.ContainsKey (Eingang)) {/// Code hier} – Hevesi

0

Sie können Klasse wie verwenden.

class Word{ 
    String wordName; 
    int value; 

    public Word(String wordName, int value){ 
     this.wordName = wordName; 
     this.value = value; 
    } 

    // getter 
    public String getWordName(){ 
     return this.wordName; 
    } 

    public int getValue(){ 
     return this.value; 
    } 

    // setter 
    public void setWordName(String wordName){ 
     this.wordName = wordName; 
    } 

    public void zetValue(int value){ 
     this.value = value; 
    } 

} 

Sie können ein Objekt des Wortes schaffen

Word person = new Word("Person",3); 
+0

Ok Sir Lemme versuchen Sie diese –

+0

OK, sicher. lassen Sie mich wissen, wenn Sie irgendein Problem bekommen. –

+0

ok Sir, ich werde auf jeden Fall –