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