如何在 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
}
这是我的代码
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
}