java - 数组未完整打印

标签 java arrays

我在完整打印数组时遇到问题。该代码被设置为打印随机数序列,并且随机数序列的数量(1-12)旨在来自用户输入。但是,我无法让它打印超过第一个随机数。我之前设法打印了整个序列,但由于这是一个作业并且我必须使用数组,所以我的第一个方法不再有效。

import java.util.Scanner;
import java.util.Arrays;

public class Test4 {
    public static void main(String[] args) {
        int randomNumber;
        int[] allNumbers = new int[12];
        Scanner keyboard = new Scanner(System.in);

        for (int i = 1; i <= allNumbers.length; i++) {
            allNumbers[i] = (int) (Math.random() * 999 + 1);
            System.out.print("How many random numbers? ");
            randomNumber = keyboard.nextInt();
            System.out.print("\n" + "Random numbers: ");
            System.out.print(allNumbers[i] + " ");
            {
                System.out.print("\n");
                System.out.print("\n" + "Even numbers: " + (allNumbers[i] % 2 == 0));
                System.out.print("\n" + "Odd numbers: ");
                break;
            }
        }
    }
} 

新代码:正在进行中...

*更新2:添加了对keyboard.nextint 的限制。

在我尝试打印奇数和偶数的部分遇到“字符串文字未用双引号封闭”错误。

*Update3:修复了上述错误(由打字错误引起)。

新问题:排序后的数字(奇数/偶数)显示出来,但格式错误。他们的表现是这样的: 奇数:475 奇数:123 偶数:62 偶数:680 偶数:870 奇数:457 ETC。 我想: 偶数:数数数数数 奇数:数数数数

还希望在那里放置一个计数器来计算偶数/奇数随机数的数量 - 有没有一种方法可以在一次打印中打印所有这些?或者我首先必须为计数器创建一个 system.out.print 然后是一个系统输出 printf

更新的代码:

import java.util.Scanner;
import java.util.Arrays;
public class Test7 {


public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    System.out.print("How many random numbers?: ");
    int size = keyboard.nextInt();
    System.out.print("\n");
    while (size>12 || size<1);

    int[] randNum = new int[size];

    for(int i = 0 ; i < randNum.length ; i++) 
         randNum[i] = (int)(Math.random() * 999 + 1);
    System.out.println("Random numbers: " + Arrays.toString(randNum).replace("]", "").replace(",", "").replace("[", "") + "\n");


    for(int i = 0 ; i < randNum.length ; i++) 
    if(randNum[i] % 2 == 0) {
     System.out.print("\r" + "Even numbers: ");
     System.out.print(randNum[i] + " ");
    } else {
     System.out.print("\r" + "Odd numbers: ");
     System.out.print(randNum[i] + " ");
    }


}}

最佳答案

Java 数组使用从零开始的索引。

for(int i = 0; i < allNumbers.length ; i++)

因此,for循环应该如上。否则,您可能应该得到 ArrayIndexOutOfBoundException。

此外,您在 for 循环中包含的 break 语句会导致循环不会运行多次。您应该始终使用带有条件的 break 语句(例如:在 if block 内)

关于java - 数组未完整打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388915/

相关文章:

java - 返回数组中匹配元素的所有索引

c - 有多少种方法可以将char数组传递给C函数?

javascript - 修改动态嵌套数组,只知道要访问的索引

Chomsky 形式的 CFG 算法的 Java 实现

java - 处理延迟加载的 EJB JPA 实体的 JAX-WS 代理对象的最佳方法是什么?

java - 等待 get 请求在 Selenium 中完成

c - *(arr+i)[1] 和 **(arr+i) 表示的元素是如何确定的?

java - HashMap 无论如何都返回 Null

java - 检查哪个类调用了函数

javascript - 使用nodejs意外 token 在bash脚本for循环中执行java程序