尝试从用户那里获取输入。用户无法计算输入的长度。所以我使用ArrayList来添加来自扫描仪的输入。之后,我通常会尝试比较ArrayList的内容,它是原始整数。使用get(int index)返回错误:
package BubbleSort;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class BubbleSort {
public static ArrayList swap(ArrayList x, int i, int j) {
Collections.swap(x, i, j);
return x;
}
public static void main(String args[]) {
List a = new ArrayList();
Scanner sc = new Scanner(System.in);
a.add(sc.nextInt());
int x = a.size() - 1;
boolean unsorted = true;
while (unsorted) {
unsorted = false;
for (int i = 0; i < x; i++) {
if (a.get(i) > a.get(i + 1)) { // <===== Error
BubbleSort.swap(a, i, i + 1);
unsorted = true;
}
}
x--; // Space utilization
}
System.out.println(Arrays.toString(a));
}
}
错误:
The operator > is undefined for the argument type(s) java.lang.Object, java.lang.Object
如何像在数组中那样比较整数?
答案 0 :(得分:1)
List
和Arraylist
是通用类型。由于您没有定义它们的类型,因此它们返回一个对象。如果将类型定义为Integer,则它将返回Integer
而不是对象。尝试通过编写
List<Integer> a = new ArrayList<>();
您可以在此处阅读有关泛型的更多信息:
https://docs.oracle.com/javase/tutorial/java/generics/index.html
答案 1 :(得分:1)
你应该尝试一下:
public static ArrayList swap(ArrayList<Integer> x, int i, int j) {
Collections.swap(x, i, j);
return x;
}
public static void main(String args[])
{
ArrayList<Integer> a = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
a.add(sc.nextInt());
int x = a.size() - 1;
boolean unsorted = true;
while (unsorted) {
unsorted = false;
for (int i = 0; i < x; i++) {
if (a.get(i) > a.get(i + 1)) { // <===== Error
BubbleSort.swap(a, i, i + 1);
unsorted = true;
}
}
x--; // Space utilization
}
System.out.println(a.toString());
}
您使用了>
运算符和两个对象,即a.get(i)
和a.get(i + 1)
。在Java中,您只能将此运算符用于数字数据类型。通过使用泛型<Integer>
,基本上指定每个元素都是整数类型。
Arrays
类中没有名为toString(List)
的方法。但可以,使用所有对象的toString()
方法,例如a.toString()
答案 2 :(得分:0)
使用a.get(i)
时,它将返回对象元素而不是整数值,这就是为什么你无法比较像&gt;这样的对象的原因。或者&lt;为此你需要将对象值转换为int
然后你可以进行比较。
更改您的陈述,如下所示
if ((int) a.get(i) > (int) a.get(i + 1)) {