是否有更快的方法根据价值排列数字?

时间:2014-01-07 04:33:36

标签: java loops math

新手在这里。我已经弄清楚如何从最高到最低排列数字,但它似乎是一种非常低效的方法,特别是对于较大的数字组。我尝试从最高到最低排列五个数字(由用户输入),整个事情从那里开始膨胀;下面是该程序的不完整代码。它仅在第一个数字也具有最高值时才有效。

请告诉我有更快的方法。

import java.io.*;
import javax.swing.JOptionPane;
class Integers
{
public static void main(String [] args) throws Exception
{


String str1 = JOptionPane.showInputDialog("Please enter the first number.");
String str2 = JOptionPane.showInputDialog("Please enter the second number.");
String str3 = JOptionPane.showInputDialog("Please enter the third number.");
String str4 = JOptionPane.showInputDialog("Please enter the fourth number.");
String str5 = JOptionPane.showInputDialog("Please enter the fifth number.");
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
int c = Integer.parseInt(str3);
int d = Integer.parseInt(str4);
int e = Integer.parseInt(str5);

// 1 abcde

if ((a>b) && (b>c) && (c>d) && (d>e))
{
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}

// 2 abced

if ((a>b) && (b>c) && (c>e) && (e>d))
{
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(e);
System.out.println(d);
}

// 3 abdce

if ((a>b) && (b>d) && (d>c) && (c>e))
{
System.out.println(a);
System.out.println(b);
System.out.println(d);
System.out.println(c);
System.out.println(e);
}

// 4 abdec

if ((a>b) && (b>d) && (d>e) && (e>c))
{
System.out.println(a);
System.out.println(b);
System.out.println(d);
System.out.println(e);
System.out.println(c);
}

// 5 abecd

if ((a>b) && (b>e) && (e>c) && (c>d))
{
System.out.println(a);
System.out.println(b);
System.out.println(e);
System.out.println(c);
System.out.println(d);
}

// 6 abecd

if ((a>b) && (b>e) && (e>c) && (c>d))
{
System.out.println(a);
System.out.println(b);
System.out.println(e);
System.out.println(c);
System.out.println(d);
}

// 7 acbde

if ((a>c) && (c>b) && (b>d) && (d>e))
{
System.out.println(a);
System.out.println(c);
System.out.println(b);
System.out.println(d);
System.out.println(e);
}

// 8 acbed

if ((a>c) && (c>b) && (b>e) && (e>d))
{
System.out.println(a);
System.out.println(c);
System.out.println(b);
System.out.println(e);
System.out.println(d);
}

// 9 acdbe

if ((a>c) && (c>d) && (d>b) && (b>e))
{
System.out.println(a);
System.out.println(c);
System.out.println(d);
System.out.println(b);
System.out.println(e);
}

// 10 acdeb

if ((a>c) && (c>d) && (d>e) && (e>b))
{
System.out.println(a);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(b);
}

// 11 acebd

if ((a>c) && (c>e) && (e>b) && (b>d))
{
System.out.println(a);
System.out.println(c);
System.out.println(e);
System.out.println(b);
System.out.println(d);
}

// 12 acedb

if ((a>c) && (c>e) && (e>d) && (d>b))
{
System.out.println(a);
System.out.println(c);
System.out.println(e);
System.out.println(d);
System.out.println(b);
}

// 13 adbce

if ((a>d) && (d>b) && (b>c) && (c>e))
{
System.out.println(a);
System.out.println(d);
System.out.println(b);
System.out.println(c);
System.out.println(e);
}

// 14 adbec

if ((a>d) && (d>b) && (b>e) && (e>c))
{
System.out.println(a);
System.out.println(d);
System.out.println(b);
System.out.println(e);
System.out.println(c);
}

// 15 adcbe

if ((a>d) && (d>c) && (c>b) && (b>e))
{
System.out.println(a);
System.out.println(d);
System.out.println(c);
System.out.println(b);
System.out.println(e);
}

// 16 adceb

if ((a>d) && (d>c) && (c>e) && (e>b))
{
System.out.println(a);
System.out.println(d);
System.out.println(c);
System.out.println(e);
System.out.println(b);
}


// 17 adebc

if ((a>d) && (d>e) && (e>b) && (b>c))
{
System.out.println(a);
System.out.println(d);
System.out.println(e);
System.out.println(b);
System.out.println(c);
}

// 18 adecb

if ((a>d) && (d>e) && (e>c) && (c>b))
{
System.out.println(a);
System.out.println(d);
System.out.println(e);
System.out.println(c);
System.out.println(b);
}

// 19 adecb

if ((a>d) && (d>e) && (e>c) && (c>b))
{
System.out.println(a);
System.out.println(d);
System.out.println(e);
System.out.println(c);
System.out.println(b);
}

// 20 aebdc

if ((a>e) && (e>b) && (b>d) && (d>c))
{
System.out.println(a);
System.out.println(e);
System.out.println(b);
System.out.println(d);
System.out.println(c);
}

// 21 aecbd

if ((a>e) && (e>c) && (c>b) && (b>d))
{
System.out.println(a);
System.out.println(e);
System.out.println(c);
System.out.println(b);
System.out.println(d);
}

// 22 aecdb

if ((a>e) && (e>c) && (c>d) && (d>b))
{
System.out.println(a);
System.out.println(e);
System.out.println(c);
System.out.println(d);
System.out.println(b);
}

// 23 aedbc

if ((a>e) && (e>d) && (d>b) && (b>c))
{
System.out.println(a);
System.out.println(e);
System.out.println(d);
System.out.println(b);
System.out.println(c);
}

// 24 aedcb

if ((a>e) && (e>d) && (d>c) && (c>b))
{
System.out.println(a);
System.out.println(e);
System.out.println(d);
System.out.println(c);
System.out.println(b);
}


}
}

4 个答案:

答案 0 :(得分:1)

您应该使用数组:

int[] numbers = new int[5];

然后遍历数组并在每个索引处分配值。如果您有意对数组进行排序,请调用Arrays.sort(numbers);

答案 1 :(得分:0)

使用ArrayList存储int值并对ArrayList进行排序。

如果是,请使用Array

int[] arr=new int[5];
Arrays.sort(arr);

如果是,请使用List

List<Integer> list=new ArrayList<>();
Collections.sort(list);

然后您将按升序排列值。要按降序排列,您可以按相反的顺序获取值。

答案 2 :(得分:0)

一种方法是:

import java.util.Arrays;
import java.util.Collections;    
import javax.swing.JOptionPane;

... // Class declaration

public static void main(String[] args) throws Exception
{
    String str1 = JOptionPane.showInputDialog("Please enter the first number.");
    String str2 = JOptionPane.showInputDialog("Please enter the second number.");
    String str3 = JOptionPane.showInputDialog("Please enter the third number.");
    String str4 = JOptionPane.showInputDialog("Please enter the fourth number.");
    String str5 = JOptionPane.showInputDialog("Please enter the fifth number.");

    Integer[] arr = new Integer[5]; // Use an array
    arr[0] = Integer.parseInt(str1);
    arr[1] = Integer.parseInt(str2);
    arr[2] = Integer.parseInt(str3);
    arr[3] = Integer.parseInt(str4);
    arr[4] = Integer.parseInt(str5);
    Arrays.sort(arr, Collections.reverseOrder());

    for (int i : arr)
        System.out.println(i);
}

注意: 数组arr的类型为Integer(在Java中,int类型是基元,而Integer类型是对象。您可能希望更多地搜索该类型)以降序模式使用Arrays.sort方法。

答案 3 :(得分:0)

这可能会有所帮助:)

public static void main(String[] args) throws Exception
{
    List<Integer> list=new ArrayList<Integer>();
    String NumStr="";
    do{
        NumStr = JOptionPane.showInputDialog("Please enter a number.");
        try {
            list.add(Integer.parseInt(NumStr));
        } catch (NumberFormatException numberFormatException) {
            NumStr="";
        }
    }while(!"".equals(NumStr));

    Collections.sort(list);

    for (int i : list)
        System.out.println(i);
}

程序在输入空字符串或字母时终止