【问题标题】:How to split an array without 0 in the output in java?java - 如何在java的输出中拆分没有0的数组?
【发布时间】:2015-07-05 06:28:55
【问题描述】:

这是我的代码

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 arrays string split


    【解决方案1】:

    当您拆分输入 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));
        }
    }
    

    【讨论】:

    • 谢谢你的解释和代码它的工作^_^b顺便说一句第二个问题,我还是不明白??
    • 对了,你能告诉我为什么我可以用分割字符串从 0 开始循环吗?
    • 假设您在上述评论中的意思是“为什么我不能”,在您拆分字符串1234 后,索引0 处的元素是您不想要的empty string .你想要的是索引1处的元素。
    • 啊.. 好的,我明白了,非常感谢兄弟.. 抱歉我的错字:D
    【解决方案2】:

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

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

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

    如果您询问如何跳过打印中的 0 值,那么您将不得不用显式循环替换 Arrays 实用程序的便利性

    【讨论】:

    • 其实我想问一下如何跳过零,我知道一个数组是从0开始的,然后又出现了一个问题,这让我很想知道为什么我不能开始从0开始的循环?当我使用“for(int i=0;i
    • yep int=1 它可以工作,但是当我将其更改为 0 时,它会给我一个类似这样的错误:“线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“”在 java .lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer.java:504) 在 java.lang.Integer.parseInt(Integer.java:527) 在 lalala.main(lalala. java:17) "这就是我问你的原因:3 对不起,我还是初学者
    【解决方案3】:

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

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

    【讨论】:

    • 我知道一个循环从 0 开始,但是当我从 0 开始时它给了我一个错误。这就是为什么我的另一个问题是“为什么我不能从 0 开始循环?”
    【解决方案4】:

    因为数组的索引从 0 开始,而不是从 1。 换个循环就好了,

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

    【讨论】:

    • 您的回答不完整。 OP问他为什么不能用0开始循环。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多