Java 无法正确添加到ArrayList
我的程序中有两个方法,一个是在数组中最小int的上方和下方添加******,另一个是在最大int的上方和下方添加%%。最大的方法基本上与其他方法相同,但出于某种原因,没有添加所需的内容 以下是最小元素法:Java 无法正确添加到ArrayList,java,arraylist,Java,Arraylist,我的程序中有两个方法,一个是在数组中最小int的上方和下方添加******,另一个是在最大int的上方和下方添加%%。最大的方法基本上与其他方法相同,但出于某种原因,没有添加所需的内容 以下是最小元素法: public static ArrayList smallestElement() { int smallest = array[0]; for (int i = 0; i < array.length; i++) if (a
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;
}
publicstaticarraylistsmallestelement(){
int最小=数组[0];
for(int i=0;i
以下是最大元素的方法:
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();
}
}
公共静态ArrayList largestElement(){
int最大=数组[0];
for(int i=0;i最大值)
最大=数组[i];
String largestString=String.valueOf(最大);
for(int i=0;i
如果有人知道为什么不能正确执行,我将非常感谢您在每次执行
smallestElement
函数时提供的帮助。而是做一些类似的事情
ArrayList<String> list = smallestElement();
ArrayList list=smallestElement();
然后,每次调用
smallestElement()
方法时使用此列表对象,每次执行smallestElement
函数时创建一个新对象。而是做一些类似的事情
ArrayList<String> list = smallestElement();
ArrayList list=smallestElement();
然后,每次调用
smallestElement()
method时都使用此列表对象。您已经在此行中创建了三次列表
smallestElement().add("%%%%%");
smallestElement().add(Integer.toString(array[i]));
smallestElement().add("%%%%%");
只创建一个列表并使用它,而不是多次调用smallestelementelement()函数
smallestElement().add("%%%%%");
smallestElement().add(Integer.toString(array[i]));
smallestElement().add("%%%%%");
只创建一个列表并使用它,而不是多次调用smallestelementelement()函数这里的事情太复杂了。无需将最小数组值转换为字符串(稍后再进行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]);
}
}
int indexToUse=0;
对于(int i=0;i
(其中,我的解决方案假设您希望对这些行使用***…而不是数组[i])您在这里的操作过于复杂。无需将该最小数组值转换为字符串(随后再进行字符串比较).Btw:这些字符串比较也是您的问题:当最小值在数组中多次出现时,您的代码肯定无法工作,因为您的代码将为每个匹配放入这些模式中 相反,您可以执行以下操作:
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]);
}
}
int indexToUse=0;
对于(int i=0;i
(其中,我的解决方案假设您希望对这些行使用***而不是数组[i])数组在哪里声明和实例化?另外,不要将变量命名为
array
和list
您正在比较int
s,那么为什么要将它们转换为String
s?这只是在添加到列表时将它们解析回Integer
。每次调用smallestElement()
,您正在创建一个新的列表
。数组
在哪里声明和实例化?另外,不要将变量命名为数组
和列表
您正在比较的int
s,那么为什么要将它们强制转换为字符串
s?这只是在添加到列表..每次调用smallestElement()
,都会创建一个新的列表。