Java 如何打印在删除所有初始化零的情况下输入的数组的所有元素? 公共字符串toString(){ 字符串allstr=“”; 对于(int i=0;i=0;i--){ allstr=(this.myArray[i]+“”)+allstr; } 返回allstr; }
这段代码打印数组的所有元素,包括初始化的0。我怎样才能排除他们?请记住,我的程序允许在数组中输入0。因此,输入的零=/=初始化的零。例如,如果一个数组有5 3 2 1 0 0-1,并且第一个零是由我输入的,那么我如何删除由于数组初始化而存在的第二个零。上述代码是项目的一部分。只是一种方法 最好的方法是使用Java 如何打印在删除所有初始化零的情况下输入的数组的所有元素? 公共字符串toString(){ 字符串allstr=“”; 对于(int i=0;i=0;i--){ allstr=(this.myArray[i]+“”)+allstr; } 返回allstr; },java,arrays,Java,Arrays,这段代码打印数组的所有元素,包括初始化的0。我怎样才能排除他们?请记住,我的程序允许在数组中输入0。因此,输入的零=/=初始化的零。例如,如果一个数组有5 3 2 1 0 0-1,并且第一个零是由我输入的,那么我如何删除由于数组初始化而存在的第二个零。上述代码是项目的一部分。只是一种方法 最好的方法是使用List代替静态数组 请在这里阅读 示例代码: public String toString(){ String allstr=""; for (int i=0 ; i<t
List
代替静态数组
请在这里阅读
示例代码:
public String toString(){
String allstr="";
for (int i=0 ; i<this.myArray.length; i++){
}
for (int i=capacity-1 ; i>=0 ; i--){
allstr=(this.myArray[i] + " ") + allstr ;
}
return allstr;
}
List myArray=new ArrayList();
对于(int i=0;i<10;i++){
如果(i%2==0){
添加((int)((Math.random()*5)+1));
}
}
System.out.println(Arrays.toString(myArray.toArray(新整数[]{})).replaceAll(
"[\\[,\\]]", ""));
使用int
数组,无法分辨设置为零的值与初始化为零的值之间的差异。但是,如果您创建
Integer
s,您将能够区分0和null
例如,使用Integer
:
List<Integer> myArray = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
myArray.add((int) ((Math.random() * 5) + 1));
}
}
System.out.println(Arrays.toString(myArray.toArray(new Integer[] {})).replaceAll(
"[\\[,\\]]", ""));
与使用int
相比:
1
0
null
如果您所拥有的只是一个原始数字数组(如
int
),那么根本无法区分初始化期间放置的零和输入产生的零。您可以使用其他方法来跟踪,例如使用一个并行的布尔数组来跟踪值是来自输入,还是来自输入的元素列表
另一种方法是使用Number
对象数组,并使用一个特殊数组来表示初始零,如biginger.zero
。来自输入的所有其他变量都是整数
或大十进制
。通过对初始化和输入使用不同的类,混合的可能性更小。顺便说一句,如果以迭代方式构建字符串,则应使用for-each语法和StringBuilder
1
0
0
不必手动构建字符串,您可以使用Java没有的string.join的各种等价物,这些等价物由不同的第三方库提供。好的,如果您的数组是这样的:
StringBuilder buf = new StringBuilder();
boolean first = true;
for (Number num : array) {
if (num != BigInteger.ZERO) {
if (first) {
first = false;
}
else {
buf.append(' ');
}
buf.append(num);
}
}
return buf.toString();
您可以创建布尔数组。假设真值是由用户输入的,而假值是初始化的
int[] myArray = {0, 0, 0, 0, 0};
每次在数组中更改或输入新值时,只需将该值标记为“已更改”
您的方法toString()将
公共字符串toString(){
字符串allstr=“”;
for(int i=0;i
您的第一个for循环没有执行任何操作。。。其次,myArray是整数数组吗?hm忘了提到用户可以输入所有可能的值。不幸的是,这是行不通的。我还必须用0初始化数组。
StringBuilder buf = new StringBuilder();
boolean first = true;
for (Number num : array) {
if (num != BigInteger.ZERO) {
if (first) {
first = false;
}
else {
buf.append(' ');
}
buf.append(num);
}
}
return buf.toString();
int[] myArray = {0, 0, 0, 0, 0};
boolean[] isChanged = {false, false, false, false, false};
isChanged[i] = true;
public String toString(){
String allstr="";
for (int i = 0; i < this.myArray.length; i++){
if (isChanged[i] == true)
allstr = allstr + (this.myArray[i] + " ");
}
return allstr;
}