我正在尝试在代码中使用数组,但是根据其他一些因素,它的初始化方式有所不同。
char[] d; char[] c; if (cIP.length>6&&cIP.length<16) { IP=true; if (cIP[cIP.length-2]=='.') { d= new char[1]; d={cIP[cIP.length-1]}; c=new char[cIP.length-2]; for (int i=0;i!=cIP.length-2;i++) { c[i]=cIP[i]; }
}
} 当我说我想要数组多长时间时,它给我错误“令牌上的语法错误,删除这些令牌”。它还说数组常量只能在初始化程序中使用。
我对你的代码进行了一些简化,并为其提供了“测试”上下文(简单的main)。
我放置了适当的注释,以便你可以更轻松地跟踪代码。
public static void main(String[] args) { System.out.println("if statement not triggered"); invokeMethod(new char[]{'a', 'b', 'c', 'd', 'e'});
System.out.println("if statement triggered");
invokeMethod(new char[]{'a', 'b', 'c', 'd', 'e', '.', 'g'});
}
private static void invokeMethod(char[] cIP) { // a suggestion is to initialize your arrays to default values // (i.e. if statement is not triggered). In this case, I've // initialized them to a empty arrays. char[] d = new char[]{}; char[] c = new char[]{};
// since you are using cIP.length several times,
// assign it to a variable for easier understanding/usage
int size = cIP.length;
if (size > 6 && size < 16) {
if (cIP[size - 2] == '.') {
// You can use this one-liner to set d to one character.
// Essentially, your code, just merged into one-liner
d = new char[]{cIP[size - 1]};
// instead of char-by-char copying in a loop
// you can use Arrays.copyOf()
c = Arrays.copyOf(cIP, size - 2);
}
}
System.out.println(c);
System.out.println(d);
} 此外,c,d和cIP毫无意义的名字。尝试给变量赋予更有意义的名称。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。