【问题标题】:Assign Integer Value to String将整数值分配给字符串
【发布时间】:2016-05-15 17:24:16
【问题描述】:

我正在开发一个应用程序,我必须将整数值分配给不同的字符串。例如我要分配:

John = 2
Good = 3
Person= 7

现在这些 John、Good 和 person 是字符串,而 2,3 和 7 是 int 值。但是我对如何实现它感到很困惑。我读了很多关于如何将 int 转换为 string 和 string 到 int 的内容,但这是不同的情况。

我为用户提供了在 editText 中输入文本的选项,例如,如果用户输入“你好 John,你是个好人”,那么这一行输出将为 12,因为 John、Good 和 person 这三个词都在输入文本。你能告诉我如何实现吗? 我被困在这里是我的小代码:

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

现在我想将这个 2 分配给 John,这样每当用户提供输入并且它包含 John 时,就会为 John 显示值 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 + " ");

}

正如你所见,我应用了你的代码,然后我想拆分我的主字符串,以便该字符串的每个单词都与 Map 中的字符串进行比较。现在我很困惑在 for 循环中写什么('stopwords' 会被什么东西代替?)

【问题讨论】:

  • 最佳实践是使用枚举(枚举数据类型)

标签: android string integer assign


【解决方案1】:

您可以使用Map&lt;String, Integer&gt; 将单词映射到数字:

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;

【讨论】:

  • 好吧,让我看看这个
  • 你能检查一下我编辑过的帖子吗?我应用了你的方法,在我的最终输出中只需要你的小指导
  • 我看到你正在创建地图,但我没有看到你在使用它。我也不是 100% 确定你想要达到的目标。
  • 先生,我的字符串“John good person man”必须与我放入地图中的这些字符串进行比较,即 John, good, person 所以我所做的就是拆分我的主字符串然后我想将该字符串的每个单词与地图中的字符串进行比较,然后输出将为 12,因为“John good person Man”具有三个具有价值的单词,即 john good 和 person 的值分别为 2,3 和 7我们分配了
  • 非常感谢先生。最后它起作用了。再次感谢
【解决方案2】:

我会为此使用字典。您可以为该字符串添加一个字符串和一个 int(或其他任何实际值)值。

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

【讨论】:

  • 好吧,先生,请检查一下,如果我想将输入文本与这个分配的值进行比较,那么我该如何比较?即 John 包含 2 正如你提到的,如果用户输入 John 很好,那么我如何将此行与该字典行进行比较
  • 字典?我们还在谈论 Java 吗?
  • 您可以检查您的字典是否包含您的输入文本,如下所示: if(d.ContainsKey(input)) { ///code here}
【解决方案3】:

您可以使用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);

【讨论】:

    【解决方案4】:

    你可以使用类。

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

    【讨论】:

    • 好吧,让我试试这个
    • 好的,当然。如果您有任何问题,请告诉我。
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多