Присвоить целочисленное значение строке

Я разрабатываю приложение, в котором мне нужно присвоить целочисленные значения разным строкам слов. Например, я хочу назначить:

John = 2
Good = 3
Person= 7

Теперь эти John, Good и person являются строками, а 2,3 и 7 — значениями int. Но я так смущен тем, как это реализовать. Я много читал о том, как преобразовать int в строку и строку в int, но это другой случай.

Я даю пользователю возможность ввести текст в editText, и если, например, пользователь вводит «Привет, Джон, ты хороший человек», тогда в этой строке будет 12, так как все три слова Джон, Хороший и человек есть во входном тексте. . Можете ли вы сказать мне, как этого добиться? Я застрял, вот мой маленький код:

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

теперь я хочу присвоить это 2 Джону, чтобы всякий раз, когда пользователь вводит ввод, и он содержит Джона, для Джона отображалось значение 2. Пожалуйста, помогите, так как я всего лишь начинающий программист

Вот мой код (отредактировано)

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 + " ");

}

Как вы видите, я применил ваш код, а затем я хочу разделить свою основную строку, чтобы каждое слово этой строки сравнивалось со строками, которые находятся на карте ‹>. Теперь я запутался, что писать в цикле for («стоп-слова» будут заменены чем?)


person Arslan Ali    schedule 15.05.2016    source источник
comment
Лучшей практикой является использование enum (перечисляемый тип данных)   -  person akhil Rao    schedule 15.05.2016


Ответы (4)


Вы можете использовать Map<String, Integer> для сопоставления слов с числами:

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

а затем запросите число, заданное словом:

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

ОБНОВЛЕНИЕ

Следующий код перебирает набор слов и суммирует значения, которым слова соответствуют:

List<String> words = getWords();
int total = 0;
for (String word : words) {
  Integer value = map.get(word);
  if (value != null) {
    total += value;
  }
}
return total;
person Egor    schedule 15.05.2016
comment
Хорошо, сэр, дайте мне проверить это - person Arslan Ali; 15.05.2016
comment
не могли бы вы проверить мой отредактированный пост? я применил ваш метод, просто мне нужно ваше небольшое руководство в моем окончательном выводе - person Arslan Ali; 15.05.2016
comment
Я вижу, что вы создаете карту, но я не вижу, чтобы вы ее использовали. Также я не уверен на 100%, чего вы пытаетесь достичь. - person Egor; 15.05.2016
comment
Сэр, моя строка, Джон, хороший человек, человек должен быть сравнен с этими строками, которые я поместил на карту, т.е. Джон, хорошо, человек, так что я сделал, что я разделил свою основную строку, а затем я хочу сравнить каждое слово этой строки со строками в карта, а затем вывод будет 12, потому что у Джона хорошего человека у человека есть три слова, которые имеют значение в них, то есть значение Джона хорошего и человека соответственно 2,3 и 7, как мы назначили - person Arslan Ali; 15.05.2016
comment
Вызовите map.get() для каждого слова и добавьте результаты, которые не равны нулю - должно быть просто. - person Egor; 15.05.2016
comment
хорошо, сэр, дайте мне попробовать, и если вы не возражаете, можете ли вы привести мне пример? - person Arslan Ali; 15.05.2016
comment
Большое спасибо, сэр. Наконец это работает. Спасибо еще раз - person Arslan Ali; 15.05.2016

Я бы использовал словарь для этого. Вы можете добавить строку и значение int (или что-то еще) для этой строки.

 Dictionary<string, int> d = new Dictionary<string, int>();
 d.Add("John", 2); 
 d.Add("Good", 3);
 d.Add("Person", 7);
person Hevesi    schedule 15.05.2016
comment
Хорошо, сэр, давайте проверим, и если я хочу сравнить введенный текст с этим присвоенным значением, то как я могу сравнить? то есть Джон содержит 2, как вы упомянули, и если пользовательский ввод Джон хорош, то как я могу сравнить эту строку с этой строкой словаря - person Arslan Ali; 15.05.2016
comment
Словарь? Мы все еще говорим о Java? - person Egor; 15.05.2016
comment
Вы можете проверить, содержит ли ваш словарь введенный вами текст следующим образом: if(d.ContainsKey(input)) { ///code here} - person Hevesi; 15.05.2016

Для этого можно использовать String contains. Ниже приведен код:

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);
person PseudoAj    schedule 15.05.2016

Вы можете использовать класс как.

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;
    }

}

Вы можете создать объект слова

Word person = new Word("Person",3);
person Ashish Tiwari    schedule 15.05.2016
comment
Хорошо, сэр, дайте мне попробовать это - person Arslan Ali; 15.05.2016
comment
Да конечно. дайте мне знать, если у вас возникнут какие-либо проблемы. - person Ashish Tiwari; 15.05.2016