2014-03-28 45 views
0
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; 
} 

此代码打印我的数组的所有元素,包括被初始化的0。我怎么排除他们?记住我的程序允许在数组中输入0。所以输入的零= = =初始化零。例如,如果一个数组有5 3 2 1 0 0 -1和第一个零是由我输入我如何删除第二个零,这是因为我的数组的初始化。上面的代码是项目的一部分。只是一种方法。如何打印输入所有初始化零的数组的所有元素?

+1

你的第一个for循环没有做任何事......其次,myArray是一个整数数组吗? – Gee858eeG

回答

0

好吧,如果你的阵列是这样的:

int[] myArray = {0, 0, 0, 0, 0}; 

您可以创建布尔数组。假设真正的价值是它是由用户输入的,如果它被初始化,则为假。

boolean[] isChanged = {false, false, false, false, false}; 

您更改数组,你只需要比你的toString方法为“改变”

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; 
} 
0

这样做的最好方法是用List<Integer>代替静态数组。

在此处阅读关于ArrayList

示例代码:

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(
     "[\\[,\\]]", "")); 
+0

hm忘了提及用户可以输入所有可能的值。所以这不会很不幸。另外我必须用0初始化数组。 – user3474553

0

使用的int数组,有没有办法告诉你设置为零值,和一个初始化的区别吧。但是,如果您创建的是一个数组,则可以区分0和null。

例如使用Integer

Integer[] list = new Integer[3]; 
list[0] = 1; 
list[1] = 0; 
for (int i = 0; i < list.length; i++) { 
    System.out.println(list[i]); 
} 

输出

1 
0 
null 

相比于使用int

int[] list = new int[3]; 
list[0] = 1; 
list[1] = 0; 
for (int i = 0; i < list.length; i++) { 
    System.out.println(list[i]); 
} 

输出:

1 
0 
0 
0

如果您拥有的是一组基本数字(如int),那么根本无法区分初始化期间放置的零和输入产生的零。您可以使用其他方法来跟踪数据,例如boolean的并行数组,以跟踪该值是来自输入还是输入的元素列表。

另一种方法是使用一组Number对象,并使用特殊的对象来表示初始零,如BigInteger.ZERO。来自输入的所有其他人将是IntegerBigDecimal。通过使用不同的类进行初始化与输入,混合的机会较小。顺便说一句,你应该使用for-each语法,如果你正在迭代地构建一个字符串,那么就应该使用StringBuilder

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(); 

而是手动构建的字符串,你可以使用任何的各种等价物的string.join是Java没有,由不同的第三方库提供的。

相关问题