Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java get()返回错误的值,即使它们在映射中都是正确的_Java_Arrays_Hashmap - Fatal编程技术网

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

Java get()返回错误的值,即使它们在映射中都是正确的,java,arrays,hashmap,Java,Arrays,Hashmap,目标是接收长度为36的字符串[],它将是一个从1x1到6x6的6x6数组,然后打印出在2d数组中找到的单词的坐标。很简单。我已将每个数组项与相应的坐标(作为字符串值,因为我需要返回字符串)一起放置到地图中。如果我打印的所有值都正确打印11到66,但是如果输入是“NO70JE3A4Z28X1GBQKFYLPDVWCSHUTM65R9I”,例如,当我应该得到“1166”时,我会得到“1271”作为输出。有什么想法吗?这是我的密码 int rcounter = 1; int ccou

目标是接收长度为36的字符串[],它将是一个从1x1到6x6的6x6数组,然后打印出在2d数组中找到的单词的坐标。很简单。我已将每个数组项与相应的坐标(作为字符串值,因为我需要返回字符串)一起放置到地图中。如果我打印的所有值都正确打印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");
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