gpt4 book ai didi

java - 如何在 while 循环之外声明一个数组,但在 while 循环中初始化它?

转载 作者:行者123 更新时间:2023-12-01 23:23:46 25 4
gpt4 key购买 nike

我尝试在代码中使用数组,但根据其他一些因素,它的初始化方式有所不同。

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];
}


}
}

当我说我想要数组有多长时,它给了我错误“ token 上的语法错误,删除这些 token ”。它还说数组常量只能在初始值设定项中使用。

最佳答案

我稍微简化了您的代码,并为其提供了“测试”上下文(简单的主要)。

我已经添加了适当的注释,以便您可以更轻松地跟踪代码。

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);
}

此外,cdcIP 都是毫无意义的名称。尝试为您的变量指定更有意义的名称。

关于java - 如何在 while 循环之外声明一个数组,但在 while 循环中初始化它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58316087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com