【问题标题】:How to input different numbers with Java如何用Java输入不同的数字
【发布时间】:2013-10-26 23:49:59
【问题描述】:

问题是编写一个对三个整数进行排序的程序。整数从输入对话框输入并分别存储在变量 num1、num2 和 num3 中。程序对数字进行排序,使得 num1

实际上我是这样做的,但结果仅适用于 1 ,2 和 3 个数字!

当我输入任何不同的数字时,它不会显示我想要的结果!

这是我的代码..

import javax.swing.JOptionPane;

public class number order {

 public static void main(String[] args) {

 int num1;
 int num2;
 int num3;

    String n = JOptionPane.showInputDialog(null, "input NUM 1 " );
           num1 = Integer.parseInt(n);
    String u = JOptionPane.showInputDialog(null, "input NUM 2 " );
         num2 = Integer.parseInt(u);
    String m = JOptionPane.showInputDialog(null, "input NUM 3 " );
        num3 = Integer.parseInt(m);

    if (num1<=num2&& num2<=num3)
        System.out.println( num1+"<="+ num2+"<="+num3 );
    if(num2<=num1&&num1<=num3)
        System.out.println(num2+"<="+num1+"<="+num3);
    if (num3<=num1&&num1<=num2)
        System.out.println(num3+"<="+num1+"<="+num2);


    // TODO code application logic here
 }
}

【问题讨论】:

  • 您能重新表述一下您的问题吗?您的意思是该程序只能接受 3 个数字作为输入(而不是,例如,四个或五个)?还是您的意思是“排序”仅适用于某些输入而不适用于其他输入?
  • 我的意思是排序仅适用于某些输入(1,2 和 3)..
  • 澄清一下,如果你输入了 6、2 和 9,排序就不起作用?
  • 是的,当我输入 1,2 和 3 时它可以工作.. 1
  • 你能再检查一下吗?您的代码中没有任何内容会将输入限制为整数 1、2、3。其实6,2,9(按这个顺序)应该排序就好了。

标签: java


【解决方案1】:

问题是您只检查了这三个数字的六种可能排列中的三种。另请注意,即使对于这三个,您实际上也没有排序数字,而只是按排序顺序打印它们,即,您永远不会重新分配变量num1num2 和 @ 987654323@.

除了检查三个数字的所有可能排列或实施完整的排序算法之外,您还可以比较和交换数字的。这样一来,您就可以少得多的比较,同时仍然能够对三个数字的所有排列进行排序。

  • 如果 num1 > num2,交换 num1 和 num2
  • 如果 num2 > num3,交换 num2 和 num3
  • 如果 num1 > num2,再次交换 num1 和 num2

在这三个交换之后,数字按排序顺序排列。

当然,如果您有超过三个数字,这将变得不切实际,您应该实现一个完整的排序算法(用于练习)或使用其中一个内置函数,例如 Arrays.sort(用于现实生活)。

【讨论】:

    【解决方案2】:

    您尚未检查所有案例:

    1 < 2 < 3
    1 < 3 < 2
    2 < 1 < 3
    2 < 3 < 1
    3 < 1 < 2
    3 < 2 < 1
    

    但是,像这样检查所有情况是没有用的。 排序后的数组会更容易:

    int arr[3]={num1,num2,num3}
    java.utils.Arrays.sort(arr);
    println(arr[0] + "<=" + arr[1] + "<=" + arr[2]);
    

    【讨论】:

      【解决方案3】:
      int[] all = new int[]();
      num1 = Integer.parseInt(n);
      all[0] = num1;
      num2 = Integer.parseInt(u);
      all[1] = num1;
      num3 = Integer.parseInt(m);
      all[2] = num1;
      for(int i=0; i <all.length ;i++){
        if(i!=0 && all[i]< all[i-1]){
           temp = all[i-1];
           all[i-1] = all[i];
           all[i] = temp; 
        }
      }
      

      所有都会有排序的数组
      或者更简单的

      两步
      1) 将所有内容添加到数组中。
      2) 拨打Arrays.sort(array)

      【讨论】:

      • 我的代码是写的吗?我只需要在 JOptionPane 方法中工作!非常感谢..
      【解决方案4】:

      怎么样

      int min = min(min(num1,num2),num3);
      int max = max(max(num1,num2),num3);
      int mid = num1 + num2 + num3 - min - max;
      System.out.println(min+"<="+mid+"<="+max);
      

      【讨论】:

        【解决方案5】:
        if(num1 < num2){ if(num3 < num1) System.out.println("num2 > num1 > num3");}
        else{ if(num2 < num3) System.out.println("num3 > num2 > num1"); else System.out.println("num1 > num2 > num3");}
        

        按降序排列。

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-17
          • 2019-10-16
          • 1970-01-01
          • 2014-03-23
          • 2017-01-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多