当前位置: 首页 > 知识库问答 >
问题:

需要使用扫描仪类Java用户输入的排序方法[重复]

龙兴学
2023-03-14

我有一个方法来输出最高值,最低值,平均值,我需要一个排序方法。我曾试图提出所谓的“冒泡法”,但并不奏效。有人知道我可以使用的其他排序方法吗?

import java.util.Scanner;

public class Arrayassignment {

    public static void main(String[] args) {
        Scanner sin = new Scanner(System.in);

        System.out.println("Enter an intiger for array size.");

        int number = sin.nextInt();

        int array[] = new int[number];

        System.out.println("Array size " + number + " initiated.\n");

        System.out.println("Now enter the array intigers.");
        for (int i = 0; i < number; i++) {
            array[i] = sin.nextInt();

        }

        //System.out.println ( "\nLargest " + max (1, 3, 5) ); 
        System.out.println("sorting" + sort(array));
        System.out.println("The highest number in the array is " + max(array));
        System.out.println("The smallest number in the array is " + min(array));
        System.out.println("The average of the numbers in the array is " + avg(array));
    }

    public static int sort(int[] arg) {

        for (int i = 1; i < arg.length - 1; i++) {
            for (int j = i + 1; j < arg.length; j++) {

                if (arg[i] > arg[j]) {
                    int arrange = arg[i];

                    arg[i] = arg[j];
                    arg[j] = arrange;

                }
            }
        }
        return arrange;
    }

    public static int max(int[] arg) {
        if (arg.length == 0) {
            System.out.println(" empty arguement list ");
            return 0;
        }
        int largest = arg[0];
        for (int i = 1; i < arg.length; i++) {
            if (arg[i] > largest) {
                largest = arg[i];
            }
        }
        return largest;
    }

    public static int min(int[] arg) {
        if (arg.length == 0) {
            System.out.println(" empty arguement list ");
            return 0;
        }
        int smallest = arg[0];
        for (int i = 1; i < arg.length; i++) {
            if (arg[i] < smallest) {
                smallest = arg[i];
            }
        }
        return smallest;
    }

    public static double avg(int... arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double average = (double) sum / arr.length;
        return average;
    }
}

共有2个答案

庾远航
2023-03-14

您可以根据自己的需要使用任何方便的排序方法。对数组排序后,您可以轻松地从排序后的数组、数组的第一个元素和最后一个元素中提取最小值和最大值。

对于平均值的计算,您必须使用与使用的方法分开的方法,或者可以使用静态变量来计算排序方法中的总计。

请参阅此代码。

    public class Arrayassignment {
    public static void main(String[] args) {
        Scanner sin = new Scanner(System.in);
        System.out.println("Enter an intiger for array size.");

        int number = sin.nextInt();

        int array[] = new int[number];

        System.out.println("Array size " + number + " initiated.\n");

        System.out.println("Now enter the array intigers.");
        for (int i = 0; i < number; i++) {
            array[i] = sin.nextInt();
        }

        sin.close();

        System.out.println("sorting");
        printArray(array); //Before sort
        sort(array);
        printArray(array); //After sort
        System.out.println("The highest number in the array is " + array[array.length - 1]);
        System.out.println("The smallest number in the array is " + array[0]);
        System.out.println("The average of the numbers in the array is " + avg(array));
    }

    public static void sort(int[] arg) {
        int arrange;
        for (int i = 0; i < arg.length - 1; i++)
            for (int j = i + 1; j < arg.length; j++) {

                if (arg[i] > arg[j]) {
                    arrange = arg[i];
                    arg[i] = arg[j];
                    arg[j] = arrange;
                }
            }
    }

    public static double avg(int... arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double average = (double) sum / arr.length;
        return average;
    }

   public static void printArray(int[] arr) {
      for (int value : arr) {
         // print elements according to your convenient
         System.out.println(value);
    }
}

要打印数组,您需要遍历数组。参见上面的编码方法。

燕玉堂
2023-03-14

您可以使用许多其他排序方法。您尝试使用的方法称为“冒泡排序”,对于大型数据集来说非常昂贵,除非它们是有序的。我会推荐使用选择排序或插入排序来完成你想要完成的任务。

以下是您可以实现的许多排序算法的链接:排序算法

这里有一些动画显示了这些类型的过程(强烈建议您在实现算法之前查看这些):有用的动画

 类似资料:
  • 过了几个小时,在做一个输出平均值的方法上还没有进展,还需要做一个排序类,总体来说,作业需要。 开发方法以: < Li >“main”方法打印数组 < li >对数组排序 < li >确定最大值 < li >确定最低值 < li >计算平均值(双精度)

  • 我正在使用Java的扫描仪读取用户输入。如果我只使用nextLine一次,它可以正常工作。对于两个nextLine,第一个不等待用户输入字符串(第二个)。 输出: X:Y:(等待输入) 我的代码 你知道为什么会发生这种事吗?谢谢

  • 问题内容: 对于Java练习,我试图创建一个程序,该程序从键盘读取整数,直到输入负数为止。 并打印整数的最大值和最小值,而忽略负数。 一旦运行,是否可以在同一程序中进行连续输入?我必须每次都继续运行该程序以输入数字。 任何帮助,将不胜感激 这是我的代码的一部分-它可以工作,但是我认为有一种更简单的方法可以执行我想要的操作,但不确定如何操作! 问题答案:

  • 对于java实践,我正在尝试创建一个程序,从键盘读取整数,直到输入负数。 它打印整数的最大值和最小值,忽略负数。 是否有一种方法可以在同一个程序运行后继续输入?每次输入一个数字,我都要继续运行程序。 任何帮助将不胜感激 这是我的代码的一部分-它可以工作,但我认为有一种更简单的方法可以做我想做的事情,但不确定如何做!

  • 问题内容: 我正在尝试让扫描仪在循环中进行输入。一旦用户想要完成操作,他就可以退出此循环。我尝试了许多不同的方法来执行此操作,但始终存在一些问题。这是代码: 上面代码的问题(在我尝试的其他方法上也会发生)是,当用户键入 Y时 ,将跳过名字的第一个输入,并跳转到姓氏。如果用户键入 N, 则循环将正确停止。有人可以解释发生这种情况的原因,以及如何克服使用课堂的问题? ps:执行类似的操作,将导致循环终

  • 我正在尝试通过单行输入检索用户输入:例如,使用扫描仪分隔符为Comma5,6,4,8,9。如何使用这种类型的输入检索任意数量的整数?也就是说,不必询问用户希望输入多少个整数。下面是我一直在使用的代码,但是当我想中断时,不能中断while循环。请注意,我保留System.Out以跟踪程序当前运行的位置。令人困惑的是,我可以以这种格式获得用户输入,但程序停止并再次要求用户输入,然后如果输入是一个整数,