package exercise;
public class qwe {
public static void main(String[] args){
int[] a = new int[22];
for(int i=0,j=-6; i<a.length&&j<=38; j++) {
if(j%2==1) {
a[i]=j;
}
}
}
}
int[] a = new int[22];
for(int i=0, j = -6; i < a.length && j <= 38; i++, j++) {
if(j % 2 == 1) {
a[i]=j;
}
}
System.out.println(Arrays.toString(a));
你的i始终不变是0,所以数组中只能给第一个元素赋值;其次你断点一下就会发现负数取余2等于0
首先 i < a.length 会allways true, 应添加i++或者去除该逻辑语句
第一种结果:注释 i < a.length 逻辑
foreach(增强for循环输出数组的值):
public class qwe {
public static void main(String[] args){
int[] a = new int[22];
for(int i=0,j=-6; /*i<a.length&&*/j<=38; j++) {
if(j%2==1) {
a[i]=j;
}
}
for (int i: a) {// 使用增强for循环输出数组a的值
System.out.println(i);
}
}
}
附上执行结果:
第二种结果:添加i++, 让i自增变化
第二种修改方式:
public class qwe {
public static void main(String[] args){
int[] a = new int[22];
for(int i=0,j=-6; i<a.length&&j<=38; i++, j++) {
if(j%2==1) {
a[i]=j;
}
}
for (int i: a) {// 使用增强for循环输出数组a的值
System.out.println(i);
}
}
}
同样附上第二种的执行结果:
但如果题主想要的是"想输出-6到38的奇数", 提供的解决方案:
考虑到:"负数有奇偶性吗?、负数有没有奇偶之分"
有人回答:
也有不同的回答:
便有了以下编码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class qwe {
private static final String YES = "Y";
private static final String NO = "N";
public static void main(String[] args) {
System.out.println("你同意负整数中区分奇偶数么?(Y/N):");
Scanner scan = new Scanner(System.in);
String answer = scan.nextLine();
boolean flag = false;// 负值时是否需要转为绝对值
switch (answer.toUpperCase()) {// 输入转大写
case YES:
flag = true;
break;
case NO:
break;
default:
System.out.println("检测到输入有误(非Y/N)! 输入值是:[" + answer + "], 默认负值时不进入判断");
break;
}
List<Integer> a = new ArrayList<>();// 结果列表
for (int i = -6; i <= 38; i++) {// 循环条件: 在 -6 到 38中寻找[奇数]
int temp = i;
if (flag) {// 为true则需要转为绝对值
temp = Math.abs(i);
}
if (temp % 2 == 1) {
a.add(i);
}
}
System.out.println("结果:" + Arrays.toString(a.toArray()));
}
}
各种情况的执行结果:
"负数分奇偶"版:
"负数无奇偶"版:
"我不知道啊"版:
最后, 编辑不易, 望采纳
Arrays.asList(a);
package exercise;
public class qwe {
public static void main(String[] args) {
int[] a = new int[22];
for (int i = 0, j = -6; i < a.length && j <= 38; j++) {
if (j % 2 == 1) {
a[i] = j;
}
}
for (int e : a) {
System.out.println(e);
}
}
}
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y