有人能给我解释一下这段代码吗?关于用户输入、扫描仪等
有人能给我解释一下这个代码是怎么工作的吗
它允许用户输入数字,直到1000
,然后打印原始输入的数字,偶数和奇数,全部在一个单独的数组中。但是我不明白当它输出偶数和奇数而不是偶数和奇数的数目时,有gem++
和gem1++
的部分
在把这个
double even[] = new double[gem];
double odd[] = new double [gem1];
为什么它需要再次重复gem=0
和gem1=0
?如果我问了太多的问题,我很抱歉,我只是感到困惑,我上周刚学了java
public class wutt {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter no. of elements you want in array : ");
int n = s.nextInt();
if (1 <= n && n <= 1000) {
double a[] = new double[n];
int gem = 0, gem1 = 0;
System.out.println("Enter all the elements : ");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
if (a[i] % 2 == 0)
gem++;
else
gem1++;
}
double even[] = new double[gem];
double odd[] = new double[gem1];
gem = 0;
gem1 = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] % 2 == 0) {
even[gem] = a[i];
gem++;
} else {
odd[gem1] = a[i];
gem1++;
}
}
System.out.println("Original: " + Arrays.toString(a));
System.out.println("Odd: " + Arrays.toString(odd));
System.out.println("Even: " + Arrays.toString(even));
} else
System.out.print("Invalid input");
}
}
# 1 楼答案
如果希望在用户输入大于1000或小于0的数字后程序停止,则需要在
if
条件中添加break
语句# 2 楼答案
在
double even[] = new double[gem]; double odd[] = new double [gem1];
之前的代码试图获取发生的几率数和偶数数,并将所有输入的元素放入数组a
。 在所有这些之后,现在我们得到的是一个名为a
的数字数组,包含所有输入的元素。两个数字分别是gem和gem1,其中包含发生的几率和偶数。 所以 我们得到gem(numberOfEvens)、gem1(numberoftoffics)和lista
接下来,我们需要将
a
的所有赔率放入一个名为odd[]的新数组,大小为gem1,然后 将a
中的所有even放入一个名为偶数[]且大小为gem的新数组。此时,变量gem1和gem的任务完成了。它们变得毫无用处现在,我们需要遍历列表,选择奇数和偶数,然后按顺序将它们逐个放入数组中。这就是为什么我们需要两个初始化为0的新变量。 在这种情况下,因为gem和gem1是无用的,所以它们被重新分配来帮助操作树数组
a
、odd[]
和even[]
# 3 楼答案
因此,用户在数组中输入他/她想要的元素数(
n
)差不多就是这样。首先,用户在一个数组中输入所有数字,然后简单地计算输入的奇数和偶数
然后创建两个新数组,一个用于偶数,另一个用于奇数,由于我们计算了它们,我们知道这两个新数组必须有多大
最后,所有的数字再次被迭代,并放入相应的数组中。 最后有3个数组,一个包含所有数字,一个包含偶数数字,另一个只包含奇数数字
编辑
以下是在不改变该方法性质的情况下可以进行的一些小改动:
编辑(再次)
这就是数组的样子,比如当你输入4个数字时: