gpt4 book ai didi

java - hashmap.get() 返回错误的值,即使它们在映射中都是正确的

转载 作者:行者123 更新时间:2023-12-01 12:55:17 26 4
gpt4 key购买 nike

目标是接收一个长度为 36 的 String[],它将是一个从 1x1 到 6x6 的 6x6 数组,然后打印出在 2d 数组中找到的单词的坐标。很容易。我已将每个数组项与相应的坐标放入 map 中(作为字符串值,因为我需要返回字符串)。如果我打印所有值,它们会正确打印 11 到 66,但如果输入是“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”,例如,当我应该得到“1166”时,我会得到“1271”作为输出。有任何想法吗?这是我的代码。

     int rcounter = 1;
int ccounter = 1;
HashMap<String, String> soup = new HashMap<String, String>();
for (int i = 0; i < a.length; i++) {
if (ccounter == 7) {
ccounter = 1;
rcounter++;}
String row = Integer.toString(rcounter);
String column = Integer.toString(ccounter);
soup.put(a[i], row + column);
ccounter++;
if (i == 36) {
break; }
System.out.println(row+column); }


return soup.get("N") + soup.get("I");

最佳答案

这是我使用的代码(几乎完全复制/粘贴),它给出了正确的答案:

public class Testtest {

public static void main(String[] args) {
char a[] = "NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I".toCharArray(); // line added to have array "a"

int rcounter = 1;
int ccounter = 1;
Map<String, String> soup = new HashMap<String, String>();
for (int i = 0; i < a.length; i++) {
if (ccounter == 7) {
ccounter = 1;
rcounter++;}
String row = Integer.toString(rcounter);
String column = Integer.toString(ccounter);

soup.put(new String(""+a[i]), row + column); // line changed to add a String, not a Char, to HashMap
ccounter++;
if (i == 36) {
break;
}
System.out.println(row+column);
}

System.out.println("result: " + soup.get("N") + soup.get("I")); // changed to display result, rather than return it
}
}

使用此代码,几乎没有任何更改,并使用您提供的字符串,我得到了正确的结果:

result: 1166

我相信,正如@alfasin所暗示的,问题出在你初始化字符数组a的方式上,并且一个寄生字符出现在第一个位置,就在字符串的开头。

关于java - hashmap.get() 返回错误的值,即使它们在映射中都是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com