public void AllCPUInf2Sn()
{
    string str3 = "";
    int num4 = Strings.Len(this.AllCPUInf);
    for (int i = 1; i <= num4; i++)
    {
        long num;
        if (i != Strings.Len(this.AllCPUInf))
        {
            string str = Strings.Mid(this.AllCPUInf, i, 1);
            string str2 = Strings.Mid(this.AllCPUInf, i + 1, 1);
            num = Strings.Asc(str);
            long num2 = Strings.Asc(str2);
            str3 = str3 + StringType.FromChar(Strings.Chr((int) (num - (num2 % 6L))));
        }
        else
        {
            str3 = str3 + StringType.FromChar(Strings.Chr((int) (num + 1L)));
        }
    }
    this.SNInf = str3;
}以上是vb。net写的 求java实现我写了这些不对 好像public static String getSN(String str) { System.out.println(str.length());
String str3 = "";
try { int count = str.length();
long t = 0;
for (int i = 1; i <= count; i++) {
long num=0; if (i != count) {
String str1 = str.substring(i-1, i);
String str2 = "";
try {
str2 = str.substring(i , i+1);
} catch (Exception ex) {
}
num = (long)str1.charAt(0);
long num2 = (long)str2.charAt(0); str3 += (char) ((int) (num - (num2 % 6.0)));
} else {
str3 += (char) ((int) (t + 1.0));
}
t = num;
}
} catch (Exception ex) {
ex.printStackTrace();
return str3;
// ex.printStackTrace();
}
return str3;
}

解决方案 »

  1.   

    你修改一下你的这个语句
    str3 += (char) ((int) (num - (num2 % 6.0)));

    str3 += (char) ((int) (t + 1.0)); 
    改为
    str3 += (int) (num - (num2 % 6.0));
    str3 += (int) (t + 1.0);

    str3 += (num - (num2 % 6.0));
    str3 += (t + 1.0);我不知道你到底遇到了什么错误 ,提醒一下就是
    vb.net和就java中数组定义有点不一样
    举个例子
    一个数组HH有十个元素
    vb.net 
    dim HH(9) as int 
    java 
    int[] HH = new int[10]