需要帮助来修复“最小”输出。此外,通过不使用Arrays.sort来更改代码

时间:2015-05-06 10:29:36

标签: arrays loops minimum

我希望在不使用Arrays.sort的情况下帮助修复“最小”输出和更改代码只是一些线索会没问题。

package newempty;
import java.util.*;
public class NewEmpty{
public static void main (String args []){
Scanner in = new Scanner (System.in);
int bry [] = new int [5];
int high = bry[0];
int low = bry[0];
for (int i = 0; i < bry.length; i++){
  System.out.print("Enter a Number: ");
  bry[i] = in.nextInt();
}
System.out.print("Ascending Order: ");
for (int i = 0; i<bry.length; i++){
  high = bry [i] > high ? bry[i]:high;
  Arrays.sort(bry);
  System.out.print(" " + bry[i]);
}
System.out.print("\nDescending Order: ");
for (int i = bry.length-1; i>=0; i--){
  low = bry [i] < low ? bry[i]:low;
  Arrays.sort(bry);
  System.out.print(" " + bry[i]);
}
System.out.println("\nMinimum: " + low);
System.out.println("Maximum: " + high);
}
}

1 个答案:

答案 0 :(得分:0)

当你正在循环中时,不要对数组进行排序!

for (int i = bry.length-1; i>=0; i--){
  low = bry [i] < low ? bry[i]:low;
  Arrays.sort(bry);
  System.out.print(" " + bry[i]);
}

你不必一遍又一遍地对它进行排序。一次就足够了。一旦排序,它就会被排序。此外,一旦您对其进行了排序,您就不必去搜索最小值和最大值。它们分别位于列表的开头和结尾。

请改为:

Arrays.sort(bry);
low = bry[0];
high = bry[bry.length-1];
System.out.print("Ascending Order: ");
for (int i = 0; i < bry.length; i++){
  System.out.print(" " + bry[i]);
}
System.out.println();
System.out.print("Descending Order: ");
for (int i = bry.length-1; i>=0; i--){
  System.out.print(" " + bry[i]);
}

在一个完全不相关的说明中,现在忘记&#34; \ n&#34;是换行符。事实并非如此。 \ n是Unixland中的换行符。 \ r \ n是Windows中的换行符。较旧的Mac使用\ r \ n作为换行符。其他一些系统甚至使用\ n \ r。

http://en.wikipedia.org/wiki/Newline

如果您认为\ n到处都是换行符,您将会遇到麻烦。在这种情况下,你可以要求println,但你也可以养成要求的习惯:

 String newline = System.getProperty("line.separator"); 

这将为您提供适用于运行代码的系统的任何换行符。