Java get()返回错误的值,即使它们在映射中都是正确的
目标是接收长度为36的字符串[],它将是一个从1x1到6x6的6x6数组,然后打印出在2d数组中找到的单词的坐标。很简单。我已将每个数组项与相应的坐标(作为字符串值,因为我需要返回字符串)一起放置到地图中。如果我打印的所有值都正确打印11到66,但是如果输入是“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”,例如,当我应该得到“1166”时,我会得到“1271”作为输出。有什么想法吗?这是我的密码Java get()返回错误的值,即使它们在映射中都是正确的,java,arrays,hashmap,Java,Arrays,Hashmap,目标是接收长度为36的字符串[],它将是一个从1x1到6x6的6x6数组,然后打印出在2d数组中找到的单词的坐标。很简单。我已将每个数组项与相应的坐标(作为字符串值,因为我需要返回字符串)一起放置到地图中。如果我打印的所有值都正确打印11到66,但是如果输入是“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”,例如,当我应该得到“1166”时,我会得到“1271”作为输出。有什么想法吗?这是我的密码 int rcounter = 1; int ccou
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");
int rcounter=1;
int ccounter=1;
HashMap soup=新的HashMap();
for(int i=0;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
}
}
我相信,正如
@alfasin
所暗示的那样,问题在于初始化字符数组a
,一个寄生字符出现在第一个位置,就在字符串的开头。向我们展示数组的定义:a
a就是我使用的示例:“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”我编译代码(尽管我必须使用soup.put(新字符串(“+a[I]),行+列);
而不是您使用的),我得到1166
(正确答案)。“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”是一个字符串,而不是一个数组。您用a[I]来调用它
。这个代码不会编译!@hawks77我想@alsafin想要的是你给我们你用来初始化字符数组a
的代码。你可以使用一种方法,使一个寄生字符出现在其他字符之前。是的,这个解决字符问题的方法确实有效。+1我确实在某个地方有一个寄生字符,有趣的是,对于一个代码挑战是为了好玩,他们为挑战设置的扫描器中存在寄生虫,所以我从没想过我会从那段代码中得到错误。很高兴我没有对算法发狂。
result: 1166