gpt4 book ai didi

java - 如何限制空值存储在数组中?

转载 作者:行者123 更新时间:2023-11-30 02:38:50 25 4
gpt4 key购买 nike

不幸的是,我的老师不允许我在这项作业中使用列表。

我想限制空值存储在我的数组中。我尝试使用 if 语句,但它不起作用。

public static void main(String[] args) {

System.out.println(messages(3, 10));
}

public static String message(int n) {

String message = null;

if ((n % 3 != 0) && (n % 5 != 0)){
message = null;
} else if((n % 3 == 0) && (n % 5 == 0)) {
message = n + ": FizzBuzz";
} else if (n % 3 == 0) {
message = n + ": Fizz";
} else if (n % 5 == 0) {
message = n + ": Buzz";
}

return message;
}

public static String[] messages(int start, int end) throws IllegalArgumentException {
if (end < start) {
throw new IllegalArgumentException();

} else {

String[] msgArray = new String[end - start];

int j = 0;

for(int i = start; i < end; i++) {
String theMsg = message(i);


/* Where I need help */

// I'm trying to use the if statement to restrict
//all null values from being stored in my msgArray */

if(theMsg != null) {



msgArray[j] = theMsg;

}
j++;
}

System.out.println();

for(String s: msgArray) {
System.out.println(s);
}

return msgArray;
}
}

期望的输出

3: Fizz
5: Buzz
6: Fizz
9: Fizz

实际输出

 3: Fizz
null
5: Buzz
6: Fizz
null
null
9: Fizz

最佳答案

如果创建数组,则指定大小。然后创建该数组并填充默认值。在本例中,String 的值为 null(int[] 的值为 0)。没有办法解决这个问题。您必须在创建数组时指定正确的长度,并且该长度不会改变。所以你有两个选择:

  1. 在创建数组之前以某种方式计算实际非空值的数量,然后创建一个具有该大小的数组,而不是当前的计算。这涉及到你的逻辑的很多变化,所以,
  2. 我建议仅从当前数组创建一个新数组,并在放入之前检查值是否为 null

见下文:

// inside your function
// instead of returning msgArray, create a new array and modify it.

// get the count of values that aren't null
int nonNull = 0;
for (int index = 0; index < msgArray.length; index++) {
if (msgArray[index] != null) nonNull++;
}

// create the new array because you can't change the size of your other array
String[] newMsgArray = new String[nonNull];

// populate the array
int newIndex = 0;
for (int index = 0; index < msgArray.length; index++) {
if (msgArray[index] != null) {
newMsgArray[newIndex] = msgArray[index];
newIndex++;
}
}

return newMsgArray;

关于java - 如何限制空值存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358752/

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