我的程序中有2个方法,一个用于在数组中最小的int之上和之下添加*****,另一个用于在最大值之上和之下添加%%%%%。最大的方法与另一方法基本相同,但由于某种原因没有添加所需的方法。
这是最小的元素方法:
public static ArrayList smallestElement() {
int smallest = array[0];
for (int i = 0; i < array.length; i++)
if (array[i] < smallest)
smallest = array[i];
String smallestString = String.valueOf(smallest);
ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i < array.length; i++) {
if (smallestString.equals(String.valueOf(array[i]))) {
list.add("*****");
list.add(Integer.toString(array[i]));
list.add("*****");
} else {
list.add(Integer.toString(array[i]));
}
}
return list;
}
以下是最大元素的方法:
public static ArrayList largestElement() {
int largest = array[0];
for (int i = 0; i < array.length; i++)
if (array[i] > largest)
largest = array[i];
String largestString = String.valueOf(largest);
for(int i = 0; i < array.length; i++) {
if (largestString.equals(String.valueOf(array[i]))) {
smallestElement().add("%%%%%");
smallestElement().add(Integer.toString(array[i]));
smallestElement().add("%%%%%");
} else {
smallestElement().add(Integer.toString(array[i]));
}
}
System.out.println(smallestElement());
return smallestElement();
}
}
如果有人知道为什么这不正确,我会非常感谢帮助
答案 0 :(得分:4)
每次执行smallestElement
功能时,都在创建新对象。而是做类似的事情,
ArrayList<String> list = smallestElement();
然后在每次调用smallestElement()
方法
答案 1 :(得分:0)
您已经通过此行创建了3次列表
smallestElement().add("%%%%%");
smallestElement().add(Integer.toString(array[i]));
smallestElement().add("%%%%%");
只创建一个列表并使用它而不是多次调用smallestelementelement()函数
答案 2 :(得分:0)
你在这里过于复杂。没有必要将那个最小数组值转换为字符串(然后再进行 String 比较)。顺便说一下:那些字符串比较也是你的问题:当你的最小值在你的数组中出现几次时,你的代码肯定不会起作用 - 因为你的代码会为每个匹配添加这些模式!
相反,你可以这样做:
int indexToUse = 0;
for (int i = 0; i < array.length; i++) { // please always use braces!
if (array[i] < array[indexToUse]) {
indexToUse = i;
}
}
List<String> valuesWithMarkerStrings = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
if (i == indexToUse -1 || i == indexToUse+1) {
valuesWithMarkerStrings.add("******");
} else {
valuesWithMarkerStrings.add(Integer.toString(array[i]);
}
}
(我的解决方案假设您希望*** ...而不是数组[i]用于此类行...)