我也是编程和Java的新手。我需要编写一个void方法来对输入的数组进行排序,我编写了代码,但不知道如何从void方法显示排序列表。任何愿意帮忙的人。非常感谢。
package util.assign4;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
import util.IO;
public class UtilAssign4 {
public static int[] getData (String input){
StringTokenizer st = new StringTokenizer(input);
int []x = new int[st.countTokens()];
for(int i = 0;st.hasMoreTokens(); i++){
try{
x[i] = Integer.parseInt(st.nextToken());
}
catch(Exception e){
JOptionPane.showMessageDialog(null," Invalid input");
System.exit(1);
}
}
return x;
}
public static int getHighest(int g[]){
int hi = g[0];
for( int k = 1; k <g.length;k++)
if(g[k]> hi) hi = g[k];
return hi;
}
public static int getSmallest(int p[]){
int sm = p[0];
for(int l = 1;l<p.length;l++)
if(p[l] < sm) sm = p[l];
return sm;
}
public static float getAverage(int n[]){
float sum = 0.0f;
for(int y = 0;y <n.length; y++) sum += n[y];
return sum/n.length;
}
public static void getSorted(int grades []){
for(int i = 0; i<grades.length-1;i++){
int largest =i;
for(int j = 0;j<grades.length;j++)
if(grades[j]>grades[largest]) largest = j;
int temp = grades[largest];
grades[largest] = grades[i];
grades[i]=temp;
}
}
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("Enetr one or more grades:");
int [] x = getData(input);
int j = getHighest(x);
int m = getSmallest(x);
float a = getAverage(x);
IO.showMsg("Array you entered:" + input + String.format("\nThe"
+ " higheset grade is:%2d \n"
+ "The Lowest Grade is:%2d \n"+"The average is:%2.2f\n"
+ "The sorted list: ",
j,m,a));
}
}
答案 0 :(得分:2)
您不应该使用sort
方法打印数组的内容。你的要求(我打赌)是对提供给方法的数组进行“就地”排序(它已经看起来像你正在做的那样)。这意味着给定一个数组:
int[] grades = new int[] {34, 76, 12, 0, -1};
当你打电话时:
UtilAssign4.getSorted(grades);
传入方法的数组实际上是在 方法中排序的,因此不需要返回(这就是返回类型为void的原因)。总而言之,在调用sort方法之前,您的数组是未排序的。调用完成后,现在已经对同一个数组进行了排序。
现在您可以在调用方法中打印出已排序的数组(在本例中为main(String[])
:
getSorted(x); // <-- call the sort function, on your array
String msg = String.format("\nThe higheset grade is:%2d \n"
+ "The Lowest Grade is:%2d \nThe average is:%2.2f\n"
+ "The sorted list: %s", j, m, a, Arrays.toString(x));
IO.showMsg(msg);
注意Arrays.toString(x)
?这将采用您的排序数组,并将其转换为字符串表示形式(看起来像这样:[76,34,12,0,-1])。
答案 1 :(得分:0)
将数组缩小到
的任何字段数组中 public class UtilAssign4 {
private Integer[] shorted = new Integer[100];
public static int[] getData (String input){
.
.
}
在你的void方法中使用上面的数组做你的东西并在你想要的地方使用