绝对值都不相等。n=0表示输入数据的结束,不做处理。
样例输入
3 3 -4 2
4 0 1 2 -3
0
样例输出
-4 3 2
-3 2 1 0
我的代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner rd = new Scanner(System.in);
int N = 0;
// 循环才能输入多组数据
N = rd.nextInt();
int arr[]=new int[N];
int i,j,temp;
for(i=0;i<N;i++)
{
arr[i]+=rd.nextInt();
}
for(i=0;i<N;i++)
{
for(j=N-1;j>i;j--)
{
if(Math.abs(arr[j])>Math.abs(arr[j-1]))
{
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}
for(i=0;i<N;i++)
{
System.out.print(arr[i]+" ");
}
}
}
现在解决了输入一组数据可以算出,怎样一次输入两组数据计算
------最佳解决方案--------------------
在输入数据的时候你要做判断,一个一个的判断,就是判断该数字是否为0,不为0的话就接受该数字到arr数组中,若为零则开始计算第一组。直到计算结束
------其他解决方案--------------------
public static void main(String[] args) throws FileNotFoundException {
Scanner rd = new Scanner(System.in);
String data = "";
Scanner sc = null;
int N = 0;;
List<int[]> list = new ArrayList<int[]>();
while(true){
String line = rd.nextLine();
if("".equals(line)){
break;
}
data += line + "\n";
sc = new Scanner(line);
N = 0;
// 循环才能输入多组数据
N = sc.nextInt();
int arr[]=new int[N];
int i,j,temp;
for(i=0;i<N;i++)
{
arr[i]+=sc.nextInt();
}
for(i=0;i<N;i++)
{
for(j=N-1;j>i;j--)
{
if(Math.abs(arr[j])>Math.abs(arr[j-1]))
{
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}
list.add(arr);
}
for(int i=0; i<list.size(); i++){
for(int j=0; j<list.get(i).length; j++){
System.out.print(list.get(i)[j] + " ");
}
System.out.println();
}
}
------其他解决方案--------------------
如果要以最后一行为0作为结束符的话只要改成"0".equals(line)就行