Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 int[]数组不在方法之间传输_Java_Arrays - Fatal编程技术网

Java int[]数组不在方法之间传输

Java int[]数组不在方法之间传输,java,arrays,Java,Arrays,我在这件事上耽搁了一段时间。我有以下两种方法: public static int[] buildBoyerMooreCharTable(String pattern) { int[] map = new int[Character.MAX_VALUE + 1]; char[] ca = pattern.toCharArray(); for (int i = 0; i < map.length; i++) { for (int k

我在这件事上耽搁了一段时间。我有以下两种方法:

public static int[] buildBoyerMooreCharTable(String pattern) {
    int[] map = new int[Character.MAX_VALUE + 1];
    char[] ca = pattern.toCharArray();

    for (int i = 0; i < map.length; i++)
    {
            for (int k = 0; k < ca.length; k++)
            {
                if (Character.getNumericValue(ca[k]) == i)
                {
                    //System.out.println("YO");
                    map[i] = findMax(1, pattern.length() - pattern.lastIndexOf(ca[k]) - 1);
                }
            }
    }
    for (int j =0 ; j < ca.length; j++)
    { System.out.println(map[Character.getNumericValue(ca[j])]);}
    System.out.println("Gut check " + map[Character.getNumericValue('a')]);

    return map;
}
这张桌子转得不对!在我的显示窗口中,我得到以下信息:

Gut check 3 
Gut check 0
Did it transfer 0
肠道检查3是正确的!其余的都没有

这是因为它被称为

StringSearch ss = new StringSearch();
String yay = "abcdabcdabce";
StringSearch.buildBoyerMooreCharTable(yay);
List<Integer> a_i = new ArrayList<Integer>();
a_i = StringSearch.boyerMoore("d", yay);
StringSearch ss=new StringSearch();
字符串yay=“abcdcdabce”;
StringSearch.buildBoyerMooreCharTable(yay);
列出a_i=new ArrayList();
a_i=StringSearch.boyerMoore(“d”,耶);
所以…当方法boyerMoore实际被调用时。。。我们得到一个失败的值


绕过我发布的所有代码-我认为可能存在不理解如何将数组设置为彼此相等的问题…

您正在调用Character.getNumericValue(char),但这似乎不是一个好的选择。对于此函数的范围,返回值为-1,大于1000。e、 g.Character.getNumericValue(“?”)为-1

我怀疑您想要使用ASCII值,这是该值已经存在的值,因此您不需要调用任何函数来执行此操作

    if (Character.getNumericValue(ca[k]) == i)
应该是公正的

    if (ca[k] == i)
搜索每一个可能的字符是相当低效的,因为你知道每次只会出现一个限制集。我建议你只搜索实际出现的角色


出于您的兴趣,以下代码将打印大量其他内容

for (int i = 0; i <= Character.MAX_VALUE; i++) {
    int value = Character.getNumericValue(i);
    if (value >= 0)
        System.out.println((char) i + " is " + value);
}

你所做的看起来不错。但是,您正在将
map[Character.getNumericValue('a')]
map[Character.getNumericValue('b')]
进行比较-这可能是问题所在吗?您希望
Character\getNumericValue()
返回什么?显示println语句的结果。
    if (ca[k] == i)
for (int i = 0; i <= Character.MAX_VALUE; i++) {
    int value = Character.getNumericValue(i);
    if (value >= 0)
        System.out.println((char) i + " is " + value);
}
ⅰ is 1
ⅱ is 2
ⅲ is 3
ⅳ is 4
ⅴ is 5
ⅵ is 6
ⅶ is 7
ⅷ is 8
ⅸ is 9
ⅹ is 10
ⅺ is 11
ⅻ is 12
ⅼ is 50
ⅽ is 100
ⅾ is 500
ⅿ is 1000