在for循环后返回

时间:2013-12-07 05:53:48

标签: java for-loop printing

我需要创建自己的HashCode()方法来计算String的HashCode。

到目前为止,我的代码看起来像这样

    public long HashCode(String n){
        long x = 0;
        for(int i=0; i >= n.length()-1; i++){
            x =+ 31^(n.length() -1) * n.charAt(i);
        }
        System.out.println(Long.toString(x));
        return x;
    }

我的println打印"0"虽然它在for循环中被更改了。 有没有办法退回已更改的x,而不是初始化的x=0

5 个答案:

答案 0 :(得分:4)

i = 0;  and i >= n.length()-1;

然后for循环永远不会被执行。

改为使用

for(int i=0; i < n.length(); i++)

答案 1 :(得分:1)

条件应为<=而不是>=

for (int i = 0; i <= n.length() - 1; i++) {
        x = +31 ^ (n.length() - 1) * n.charAt(i);
    }

更多

for (int i = 0; i < n.length(); i++) {
            x = +31 ^ (n.length() - 1) * n.charAt(i);
        }

够了。

根据你的评论,“Cat”应返回67510 ,你的逻辑需要改变。

Check here,“猫”作为输入,您的代码生成247

答案 2 :(得分:0)

除了其他更正之外,看起来您打算使用+=,而是代码说= +

x =+ 31^(n.length() -1) * n.charAt(i);

应该是

x += 31^(n.length() -1) * n.charAt(i);

答案 3 :(得分:0)

不应该是

for(int i=0; i <= n.length()-1; i++){  
      //OR
for(int i=0; i < n.length(); i++){ 

而不是

for(int i=0; i >= n.length()-1; i++){

答案 4 :(得分:0)

像这样更改您的代码

        long x = 0;
    for (int i = 0; i <= n.length() - 1; i++) {
        x += 31 ^ (n.length() - 1) * n.charAt(i);
    }
    System.out.println(Long.toString(x));

您的情况有误,请尝试调试代码以找出问题所在