-1
我想制作一个程序,订购3个数字,我将其引入到数组中。Java - 订购3个号码
程序编译正确,但是,与数字 “6,3,2:” 我希望得到:
初始数据:6,3,2。 有序数据:2,3,6,
代替它。但是,我得到:
初始数据:2,3,6, 有序的数据:0,0,0。
为什么我得到这个结果?
也许错误可能在sortData()方法内?
谢谢!
import java.io.*;
public class SortNumbers {
public static void main (String args[]) {
//Array for initial data
int [] initialData;
//Array for ordered data
int [] orderedData;
//Length of data, will be asked to the user or put it handly
int dataLength = 3;
initialData = inputData(dataLength); //Input data
if (initialData!=null) { //assess data validity
orderedData = sortData(initialData); //Sort data
//Print results
System.out.println("Initial data:");
printData(initialData);
System.out.println("Ordered data:");
printData(orderedData);
} else {
System.out.println("Error entering data.");
}
} //end main()
/**
* inputData()
* Inputs an array of numbers.
* @param int length: number of elements to input.
* @return int []: an array containing the numbers given by the user,
* or null in case of an error.
*/
public static int [] inputData(int numElements) {
int [] data = new int [numElements];
try {
BufferedReader reader = new BufferedReader(
//Note: you can write this in the same line
new InputStreamReader(System.in)
);
for (int index=0; index<numElements; index++) {
System.out.format("Input int number (pos %d of %d): ", index+1, numElements);
data[index] = Integer.parseInt(reader.readLine());
}
} catch (NumberFormatException e) {
System.out.println("Input value must be a number!");
data = null;
} catch (IOException e) {
System.out.println("Error reading data " + e.getMessage());
data = null;
}
return data;
}
/**
* sortData()
* Sorts an array of numbers
* @param int [] inData: array of numbers to sort.
* @return int []: an array of ordered numbers.
*/
public static int [] sortData(int [] inData) {
//TODO
//outData=intData;
//http://www.java-examples.com/java-bubble-sort-example
int [] outData = new int [inData.length];
int temp = 0;
for(int i=0; i < inData.length; i++){
for(int j=1; j < (inData.length-i); j++){
if(inData[j-1] > inData[j]){
//swap the elements!
temp = inData[j-1];
inData[j-1] = inData[j];
inData[j] = temp;
}
}
}
return outData;
}
/**
* printData()
* prints an array of numbers.
* @param int [] data: data array to print.
*/
public static void printData(int [] data) {
for (int index=0; index<data.length; index++) {
System.out.format("%d ", data[index]);
}
System.out.println("");
}
} //end class
提示:该方法'sortData'您不要修改'outData',所以它将始终为零填充。 – BackSlash
在'sortData'中你要返回哪个数组,什么时候填充数据,什么时候分类? – Pshemo
嘿@Jordi,你见过我的回答吗?你还需要什么别的吗? – janos