2015-05-06 33 views
0

改变代码我希望在不使用Arrays.sort的情况下修复“最小”输出和更改代码。只需要一些线索就可以了。需要帮助确定“最小”输出。另外,通过不使用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); 
} 
} 

回答

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]); 
} 

在一个完全无关的笔记,忘记现在是 “\ n” 是换行符。那是不正确的。 \ n是Unixland中的换行符。 \ r \ n是Windows域中的换行符。较旧的Mac使用\ r作为换行符。其他一些系统甚至使用\ n \ r。

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

,如果你认为\ n是换行符无处不在,你将有头痛以后。在这种情况下,你可以问一个println,但你也可以得到的习惯要求的:

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

这会给你任何换行符是适当的代码运行的系统。

+0

谢谢先生@Kevin Walker。呵呵呵。 –