如何在 java 的输出中分割一个没有 0 的数组?

How to split an array without 0 in the output in java?

这是我的代码

import java.util.*;
import java.util.*;

public class lalala {
    public static Scanner input;
    public static void main(String[] args) {
        input = new Scanner(System.in);

        System.out.print("Input array: ");
        String n = input.nextLine();
        String[] x= n.split("");

        int[] array = new int [x.length];
        for(int i=1;i<x.length;i++){ //this is the loop i want to ask
            array[i] = Integer.parseInt(x[i]);
        }

        System.out.println(Arrays.toString(array));     

    }
}

这是我的输入和输出:

Input array: 1234
[0, 1, 2, 3, 4]

如何打印没有 0 的输出?

还有一个问题,为什么我不能从 0 开始 (for) 循环?

首先,如果这是学习 Java 语言的一部分,那么我建议您采用约定,将 class 名称大写。

其次 - 在我看来你的输入是 1 2 3 4 而不是指定的,否则 int 数组将包含一个值 1234

第三 - 你到底在问什么?如果你问为什么数组中的第一个单元格为零,那么我的回答是因为 Java 中的数组以索引 0 开头(就像所有 C 系列一样)并且编译器将 int 类型的数组初始化为值 0。索引 0 处的单元格在从 1

开始的循环中从未被分配任何值

如果您询问如何在打印中跳过 0 的值,那么您将不得不用显式循环

替换 Arrays 实用程序的便利性

因为数组的索引是从 0 开始的,而不是从 1 开始,所以将 for 循环更改为

for(int i=0;i<x.length;i++){ //start from i=0

当您拆分输入 1234 时,您得到的是 [, 1, 2, 3, 4] - 一个大小为 5.

的数组

因此,您的 int[] array 长度变为 5,并且所有 5 元素都初始化为 0

然后您将元素从 1st 索引更新为 4th 索引的数字 1,2,3,4 保持 0th 索引不变。

这就是您得到 [0, 1, 2, 3, 4] 作为输出的原因。

试试这个:

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

public class lalala {

    public static Scanner input;

    public static void main(String[] args) {
        input = new Scanner(System.in);
        System.out.print("Input array: ");
        String n = input.nextLine();            //1234
        String[] x = n.split("");               //[,1,2,3,4]
        int[] array = new int[x.length - 1];    // size = 4
        for (int i = 1; i < x.length; i++) {
            array[i - 1] = Integer.parseInt(x[i]);
        }
        System.out.println(Arrays.toString(array));
    }
}

使用 String#toCharArray() 的另一种方法:

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

public class lalala {

    public static Scanner input;

    public static void main(String[] args) {
        input = new Scanner(System.in);
        System.out.print("Input array: ");
        String n = input.nextLine();
        char[] x = n.toCharArray();
        int[] array = new int[x.length];
        for (int i = 0; i < x.length; i++) { //this is the loop i want to ask
            array[i] = Integer.parseInt(x[i] + "");
        }
        System.out.println(Arrays.toString(array));
    }
}

因为数组的索引是从0开始的,而不是1。 只需更改循环,

for(int i=0;i<x.length;i++)
{
//Your code enter here
}