应该是数组没有分配空间有关,另外判断整除那里需要把n改为i,修改如下:
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=1000;
int num=0;
for(int element:fun(n)) {
System.out.print(element+" ");
num++;
if(num%15==0) { //每隔15个换行,让结果显示更整洁
System.out.println();
}
}
}
public static int [] fun (int n) {
int [] shu = new int[n]; //为数组分配空间
int i;
int shuzu_n=0;
for(i=7;i<=n;i++) {
if((i%7==0)||(i%11==0)) {
shu[shuzu_n]=i;
shuzu_n++;
}
if((i%7==0)&&(i%11==0)) {
shuzu_n--;
continue;
}
}
// for(int element:shu) {
// System.out.print(element+" ");
// }
int [] result = new int[shuzu_n];
i=0;
//把数组里面的0去掉
for(int element:shu) {
if(element>0) {
result[i]=element;
i++;
}else {
break;
}
}
return result;
}
}
是i%7,不是n%7
你传进来的n没有用
除非你是想拿n代替1000
-=-=-=-
另,逻辑太复杂,没必要搞什么continue
直接if(i%77!=0 && (i%7==0) || (i%11==0))
数组shu没初始化吧,你得new一下。
int[] shu = new int[1001];
程序逻辑也不对,参考另一位的回答。
你这是空指针异常,因为你的fun()方法的返回值是null;为null的原因是你往shu数组里增加元素的方法不对,,而且一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。换成集合如ArrayList试下
直接用ArrayList
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
int shuzu_n = 0;
for (int i = 0; i < 1000; i++) {
if (!(i % 7 == 0 && i % 11 == 0)) {
if (i % 7 == 0 || i % 11 == 0) {
arr.add(i);
}
}
}
System.out.println(arr);
}