Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串转换为数字并对其排序?_Java_Sorting - Fatal编程技术网

Java 如何将字符串转换为数字并对其排序?

Java 如何将字符串转换为数字并对其排序?,java,sorting,Java,Sorting,谁能告诉我解决这个问题的方法吗。要求显示一个菜单,选择气泡排序、插入排序。允许用户输入无限数,并根据自己的选择对这些数字进行排序。我迷路了。这是我一直在研究的代码。我不知道如何让用户输入字符串并将其拆分为int并对其进行排序,以及如何在toString()中输出结果 公共类整数数组排序{ 私有int[]整数数组; 整数排序法; 公共整数数组排序(字符串列表编号,整数排序方法){ //StringTokenizer strToken=新的StringTokenizer(列表编号“”); 对于(in

谁能告诉我解决这个问题的方法吗。要求显示一个菜单,选择气泡排序、插入排序。允许用户输入无限数,并根据自己的选择对这些数字进行排序。我迷路了。这是我一直在研究的代码。我不知道如何让用户输入字符串并将其拆分为int并对其进行排序,以及如何在toString()中输出结果

公共类整数数组排序{
私有int[]整数数组;
整数排序法;
公共整数数组排序(字符串列表编号,整数排序方法){
//StringTokenizer strToken=新的StringTokenizer(列表编号“”);
对于(int i=0;i0)和&(integerArray[j-1]>B)){
整数数组[j]=整数数组[j-1];
j--;
}
整数数组[j]=B;
}
}//其中,数组是大小为n的数组
public void bubbleSort(){
int n=integerArray.length;
对于(int pass=1;passintegerArray[i+1]){
//交换元素
int temp=整数数组[i];
整数数组[i]=整数数组[i+1];
整数阵列[i+1]=温度;
}
}
}
}//其中integerArray是大小为n的数组
public void selectionSort(){
for(int i=0;iintegerArray[j]){
//…交换元素
int temp=整数数组[i];
整数数组[i]=整数数组[j];
整数阵列[j]=温度;
}
}
}
}//其中integerArray是大小为n的数组
公共字符串toString(){
字符串str=“”;
for(int i=0;i
我不知道如何让用户输入字符串并将其拆分为int并对其排序

有很多方法可以从用户那里输入并使用它。最简单的方法是使用输入流并将其传递给扫描仪实例,如下所示

Scanner inputScanner = new Scanner(System.in);
// since your sorting method is an int
int userChoice = inputScanner.nextInt();

// now just pass this to the method and you have your input problem solved, 
//Yes you will have to make an object of your class
classObject.IntegerArraySorting(yourList, userChoice)
我们如何在toString()中输出结果


我已经为您简化了代码,并在必要时添加了解释,请看一下

有两个类,
IntegerArraySorting
Main

我已经在
IntegerArraySorting
中为排序算法编写了代码,为
int
数组编写了getter/setter,同时从
Main
类创建了这个类的实例。我还删除了构造函数并创建了一个名为
selectAndStartSorting
的新方法,用于输入选择排序算法

回答你的问题

我对如何让用户输入字符串并将其拆分为int感到困惑

您可以使用
String
类的
split()
方法基于任何正则表达式拆分字符串,并使用
Integer.parseInt
将结果字符串数组解析为
int

我们如何在toString()中输出结果

一旦
String
数组被解析为
int
数组并排序,您就可以使用
Arrays.toString
方法将排序后的
int
数组转换回
String
Arrays.toString(int[])

参见下面的代码

这里是
整数数组排序

import java.util.Arrays;

public class IntegerArraySorting{

    private int[] integerArray;

    // Getters/setters for array,
    public int[] getArray(){
        return integerArray;
    }

    public void setArray(int [] inputArray){
        integerArray = inputArray;
    }


    // Method to select sorting algorithm
    public void selectAndStartSorting(int sortingMethod) {

        switch(sortingMethod){
        case 1: 
            System.out.println("Sorting method: BUBBLE SORT");
            bubbleSort();
            System.out.println("DONE");
            break;
        case 2:
            System.out.println("Sorting method: INSERTION SORT");
            insertionSort();
            System.out.println("DONE");
            break;
        case 3:
            System.out.println("Sorting method: SELECTION SORT");
            selectionSort();
            System.out.println("DONE");
            break;
        default:
           System.out.println("Wrong Input");
        }
    }

    public void insertionSort() {
        for (int i = 1; i < integerArray.length; i++) {
            int j = i;
            int B = integerArray[i];
            while ((j > 0) && (integerArray[j - 1] > B)) {
                integerArray[j] = integerArray[j - 1];
                j--;
            }
            integerArray[j] = B;
        }
    }


    public void bubbleSort() {
        int n = integerArray.length;
        for (int pass = 1; pass < n; pass++) { 
            for (int i = 0; i < n - pass; i++) {
                if (integerArray[i] > integerArray[i + 1]) {
                    // exchange elements
                    int temp = integerArray[i];
                    integerArray[i] = integerArray[i + 1];
                    integerArray[i + 1] = temp;
                }
            }
        }
    }


    public void selectionSort() {
        for (int i = 0; i < integerArray.length - 1; i++) {
            for (int j = i + 1; j < integerArray.length; j++) {
                if (integerArray[i] > integerArray[j]) {
                    // ...Exchange elements
                    int temp = integerArray[i];
                    integerArray[i] = integerArray[j];
                    integerArray[j] = temp;
                }
            }
        }
    }

    // Converting sorted int array into String
    public String toString(int [] array){
        return Arrays.toString(array);
    }
}
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("Enter Numbers in this format 2,4,51,42,4?");

        // String input must be in this format 1,2,3,5,3,7,9 i.e sperated by commas,
        String str = input.next();

        // Split the input string on every "," and save the resulting array as a String. 
        String[] strArray = str.split(",");

        // Create new int array to later hold the numbers
        int[] numbers = new int[strArray.length];


        for (int i = 0; i < numbers.length; i++) {
            // Convert each number from String array into int and put it in numbers array
            numbers[i] = Integer.parseInt(strArray[i]);
        }

        // Create instance of IntegerArraySorting class,
        IntegerArraySorting first = new IntegerArraySorting();

        // set the Array in IntegerArraySorting (integerArray) to our integer array (numbers) 
        first.setArray(numbers);

        // Take input for choosing Sorting algorithm
        System.out.println("Select Sorting Method: ");

        int sortingMethod = input.nextInt();

        // Start Sorting
        first.selectAndStartSorting(sortingMethod);

        // Close Scanner
        input.close();

        // Print Sorrted numbers,
        for (int s : first.getArray()) {
            System.out.println(s);
        }

       // Printing sorted array as String
       System.out.println(first.toString(numbers));
    }

}

我更喜欢BufferedReader类

假设输入是这样的

1000 999 888 666 5555 333 777 4444 9999 ....................
按空间分开然后使用

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String [] inputBuffer =(br.readLine().split(" "); 
现在,您已经在inputBuffer数组中拥有了所有输入值,可以用Long、Integer、Double等任意数据类型解析它们

例如:

Integer.parseInt(inputBuffer[i]);
最后应用排序

感谢大家分享您的经验。我试图根据您的答案修复代码,但要求编写一个接受数字列表(字符串)a和排序方法(int)的构造,因此我提出了此代码
导入java.util.array;
公共类整数排序{
私有int[]整数数组;
整数排序法;
公共积分
rting(字符串列表编号,int方法){
字符串[]temp=listNumber.split(“”);
integerArray=newint[listNumber.length()];
对于(int i=0;iBufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String [] inputBuffer =(br.readLine().split(" "); 
Integer.parseInt(inputBuffer[i]);
Thank you all of you for sharing your experience. I was trying to fix my code base on your answer, but the requirement is to write a construct that accepts a number list(String) a and a sortMethod(int), so I come up with this code


        import java.util.Arrays;

    public class IntegerArraySorting{
        private int[] integerArray;
        int sortingMethod;

        public IntegerArraySo

rting(String listNumber, int method) {
        String[] temp = listNumber.split(" ");
        integerArray = new int[listNumber.length()];
        for (int i = 0; i < temp.length; i++) {
            integerArray[i] = Integer.parseInt(temp[i]);
        }
        sortingMethod = method;
    }

    public void arraySort() {
        switch (sortingMethod) {
        case 1:
            System.out.println("Sorting method: BUBBLE SORT");
            System.out.println("Original list of numbers: ");
            for (int i = 0; i < integerArray.length; i++) {

                 System.out.print(" " + integerArray[i]);
            }
            System.out.println("\rSorted list: ");
            bubbleSort();
            break;
        default:
            System.out.println("Wrong Input");
        }

    }

    public void insertionSort() {
        for (int i = 1; i < integerArray.length; i++) {
            int j = i;
            int B = integerArray[i];
            while ((j > 0) && (integerArray[j - 1] > B)) {
                integerArray[j] = integerArray[j - 1];
                j--;
            }
            integerArray[j] = B;
        }
    }// where array is an array with size = n

    public void bubbleSort() {
        int n = integerArray.length;
        for (int pass = 1; pass < n; pass++) { // count how many times
            // This neintegerArrayt loop becomes shorter and shorter
            for (int i = 0; i < n - pass; i++) {
                if (integerArray[i] > integerArray[i + 1]) {
                    // exchange elements
                    int temp = integerArray[i];
                    integerArray[i] = integerArray[i + 1];
                    integerArray[i + 1] = temp;
                }
            }
        }
    }// where integerArray is an array with size = n

    public void selectionSort() {
        for (int i = 0; i < integerArray.length - 1; i++) {
            for (int j = i + 1; j < integerArray.length; j++) {
                if (integerArray[i] > integerArray[j]) {
                    // ...Exchange elements
                    int temp = integerArray[i];
                    integerArray[i] = integerArray[j];
                    integerArray[j] = temp;
                }
            }
        }
    }// where integerArray is an array with size = n

    public String toString() {
        arraySort();
        String str = Arrays.toString(integerArray);
        return str;
    }

}


and this is my main()





    import java.util.Arrays;
    import java.util.Scanner;

    public class SortingApplication {
        public static void main(String[] args) {
            String listNumber;
            int sortingMethod;

            Scanner keyboard = new Scanner(System.in);

            System.out.println("SortingApplication");
            System.out.println("\t1." + "  " + "Bubble Sort");
            System.out.println("\t2." + "  " + "Insertion Sort");
            System.out.println("\t3." + "  " + "Selection Sort");
            System.out.println("\t4." + "  " + "Exit");
            System.out.println();
            System.out.print("Please enter a number list: ");
            listNumber = keyboard.nextLine();

            System.out.print("Please select a desired method (1), (2), (3), (4): ");
            sortingMethod = keyboard.nextInt();
            System.out.println();

            IntegerArraySorting intarray = new IntegerArraySorting_Luong(listNumber, sortingMethod);
            System.out.println(intarray);
        }
    }


The format of the output suppose to be:

Sorting method: BUBBLE SORT
Original list of numbers: 34 2 15 33 17 8
Sorted list:  2 8 15 17 33 34

but when I run my code, I can't get my original and sorted list in the same line and I get many extra zero:
Please enter a number list: 34 2 15 33 17 8
Please select a desired method (1), (2), (3), (4): 1

Sorting method: BUBBLE SORT
Original list of numbers: 
 34 2 15 33 17 8 0 0 0 0 0 0 0 0 0
Sorted list: 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 15, 17, 33, 34]