【问题标题】:How to modify this code to print the 3 integers in order?如何修改此代码以按顺序打印 3 个整数?
【发布时间】:2016-02-20 07:50:07
【问题描述】:

我有一个代码可以打印 3 个整数之间的最大整数,我想对这 3 个整数进行排序(例如 num < num1 < num2)。

我想修改我的代码来实现这个,我该怎么做?

import java.util.Scanner;
public class digits {
  public static void main(String[] args) {
    int num = 0;
    int num1 = 0;
    int num2 = 0;
    int big = 0;
    System.out.println("Please insert 3 numbers: ");
    Scanner number = new Scanner(System.in);

    if (number.hasNextInt()) {
      num = number.nextInt();
      big = num;
    }
    if (number.hasNextInt()) {
      num1 = number.nextInt();
      if (num1 > num) {
        big = num1;
      }
    }
    if (number.hasNextInt()) {
      num2 = number.nextInt();
      if (num2 > num && num2 > num1) {
        big = num2;
      }
      System.out.println(big + ">" + num1 + ">" + num);
    } else {
      System.out.println("Error: Invalid Value.");
    }
  }
}

【问题讨论】:

  • 回去看看你的笔记,通读你的教科书,然后开始学习。稍后,如果您对某事有具体问题,请回来询问,人们会更愿意帮助您。我们不会为你做作业。
  • 你能写下你的规格吗?如果您可以使用内置排序算法,则可以使用它们。或者你可以编写你的排序算法。但是我们需要知道解决这个问题的制约因素是什么。
  • 我编辑了帖子,如果我输入例如 30 作为 num、25 作为 num1 和 20 作为 num2,它会打印 30>25>30 所以有问题,我找不到答案跨度>

标签: java


【解决方案1】:

这样的东西应该可以工作

import java.util.Scanner; 
public class digits {

public static void main(String[] args)
{
    int[] nums = new int[3];
    int k = 0;
    System.out.println("Please insert 3 numbers: ");
    Scanner number = new Scanner (System.in);

    while (number.hasNext() && k < 3) {
        int i = 0;
        try {
            i = Integer.parseInt(number.nextLine());
        }
        catch (NumberFormatException e) {
            System.out.println("Error: Invalid Value.");
        }
        nums[k] = i;
        k++;
    }
    Arrays.sort(nums);
    System.out.println(nums[2]+ ">" +nums[1]+ ">" +nums[0]);

  }
}

【讨论】:

    【解决方案2】:

    查看您的代码:您正在选择三个数字中最大的一个(大),但您从不更改 num1 或 num。 因此,您的结果将始终是:大于 number&gt;second value from System.in&gt;third value from System.in

    换句话说,您只对较高的值进行排序。

    【讨论】:

    • 如何找到第二高的数字?
    【解决方案3】:

    试试下面的代码

    public static void main(String[] args) {
        System.out.println("Please insert 3 numbers: ");
        Scanner number = new Scanner(System.in);
    
        Integer[] input = new Integer[3];
        int i = 0;
        while (i != 3) {
            input[i++] = number.nextInt();
        }
        number.close();
        Arrays.sort(input, Collections.reverseOrder());
        StringBuffer sb = new StringBuffer();
        for (Integer a : input) {
            sb.append(a).append(">");
        }
        System.out.println(sb.substring(0, sb.length() - 1));
    }
    

    【讨论】:

      【解决方案4】:
      if(num1>num)
      {
          big=num1;
      }
      

      将其更改为:

      if(num1>num)
      {
          big=num1;
      }
      else
      {
          // swap num1 and num
          int tmp = num;
          num = num1;
          num1 = num;
      }
      

      也改变

      if(num2>num && num2>num1)
      {
          big=num2;
      }
      

      if(num2>num1)
      {
          big=num2;
      }
      else
      {
          // num1 is largest, so swap num1 and num2
          int tmp = num1;
          num1 = num2;
          num2 = tmp;
          if(num > num1){
              //swap num and num1
              int t = num1;
              num1 = num;
              num = t;
          }
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        相关资源
        最近更新 更多