我是java和数组列表的新手。我应该排序填充一个充满随机整数的数组,然后如果有一个运行(一行中相同数字的倍数),put()围绕该运行。 所以如果随机列表是:
2 3 4 5 5 5 5 6 7 7 9
2 3 4(5 5 5 5)6(7 7)9
这是我到目前为止所做的:
import java.util.*;
class Run {
public static void main (String [] args){
Scanner m = new Scanner(System.in);
System.out.print("Enter length wanted: ");
int len = m.nextInt();
System.out.print("Enter max number wanted: ");
int max = m.nextInt();
max = max -1;
int[] x = new int[len];
ArrayList<String> y = new ArrayList<String>();
//Filling x with random numbers
for(int i = 0; i<len; i++){
x[i] = ((int)(Math.random()*max)+1);
}
System.out.println("Orginal Array: " + Arrays.toString(x));
for(int i = 0; i<=len-1; i++){
if(x[i] == x[i++]){ //I just don't know how I am exactly supposed to sort this
}else{
}
}
//Array List with ()
System.out.println("Runs labeled Array: " + y);
}
}
答案 0 :(得分:0)
使用Collections.sort(yourList)
对ArrayList进行排序。
如果您不想使用API方法。
尝试:
for(int i=0;i<list.size(); i++){
for(int j=i+1; j<list.size(); j++){
if(list.get(i)>list.get(j)){
temp = list.get(i);
list.set(i,list.get(j));
list.set(j, temp);
}
}
}
答案 1 :(得分:0)
您需要一个String来显示最终输出。另外,不要走出阵列。 试试这样的事情:
x = Collections.sort(x);
String s = "";
boolean b;
for(int i = 0; i<=len-1; i++){
if(x[i] == x[i+1]){
s+=" ("+i+" ";
b = true;
}else{
if(b == true){
s+=i+") ";
b = false;
}
s+=i + " ";
}
}