首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -无法让它工作

Java -无法让它工作
EN

Stack Overflow用户
提问于 2015-11-23 00:20:19
回答 3查看 83关注 0票数 0

我已经试着完成这件事好几个小时了。由于用户的输入,我的程序应该生成随机数。然后程序将这些数字分成两个新的偶数组和奇数组。我已经解决了“生成的随机数”部分,但现在我需要将偶数和奇数转移到两个新的数组中。

下面是输出应该是这样的:

代码语言:javascript
复制
How many random numbers between 0 - 999 do you want? **12**

Here are the random numbers:
145 538 56 241 954 194 681 42 876 323 2 87

These 7 numbers are even:
538 56 954 194 42 876 2

These 5 numbers are odd:
145 241 681 323 87

这是我目前的代码:

代码语言:javascript
复制
import java.util.Scanner;

public class SlumpadeTal {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Hur många slumptal i intervallet 0 - 999 önskas?");
    int antal = input.nextInt();

    System.out.println("Här är de slumpade talen:");

    int[] arrayen = new int[antal];
    for (int i = 0; i < arrayen.length; i++) {
        arrayen[i] = (int) (Math.random() * 999 + 1);

        System.out.print(arrayen[i] + " ");
        if ((arrayen[i] % 2) == 0) {

            }
        }
    }
}

请注意,我不能为此使用任何类。例如Arraylist、Vector或其他!

EN

回答 3

Stack Overflow用户

发布于 2015-11-23 00:24:53

一个简单的解决方案是计算偶数和奇数的数量,创建这些大小的数组,然后再次迭代原始数组,将每个数字放在它的位置上。

编辑:如下所示:

代码语言:javascript
复制
int evenCounter = 0;
int oddCounter = 0;
Scanner input = new Scanner(System.in);
System.out.println("Hur många slumptal i intervallet 0 - 999 önskas?");
int antal = input.nextInt();

System.out.println("Här är de slumpade talen:");

int[] arrayen = new int[antal];
for (int i = 0; i < arrayen.length; i++) {
    arrayen[i] = (int) (Math.random() * 999 + 1);

    System.out.print(arrayen[i] + " ");
    if ((arrayen[i] % 2) == 0) {
         evenCounter++;
        }
    else
         oddCounter++;
    }
}
int[] evenArray = new int[evenCounter];
int[] oddArray = new int[oddCounter];
evenCounter = 0;
oddCounter = 0;
for (int i =0; i < arrayen.length; i++){
    if ((arrayen[i] % 2) == 0) {
         evenArray[evenCounter] = arrayen[i];
         evenCounter++;
        }
    else{
         oddArray[oddCounter] = arrayen[i];
         oddCounter++;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-11-23 00:30:54

我的解决方案是在数字生成后将数字划分为奇数或偶数。使用arraylist将比数组更好,因为它的容量会自动增长,而且它适合您的情况,因为您不知道每次会生成多少偶数或奇数。

票数 0
EN

Stack Overflow用户

发布于 2015-11-23 00:31:04

代码(if ((arrayen[i] % 2) == 0))中的if语句是正确的。

我建议做的不是创建新的数组,而是创建一个具有动态长度的集合类型,比如ArrayList。这样,您就不必担心首先计算出大小,因此不必迭代两次。

如果出于某种原因确实需要数组,可以使用[ArrayList#toArray(T[])](http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray(T[]%29)将ArrayList转换为数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33857073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档