需要帮助修复“最小”输出。此外,通过不使用 Arrays.sort 来更改代码
Posted
技术标签:
【中文标题】需要帮助修复“最小”输出。此外,通过不使用 Arrays.sort 来更改代码【英文标题】:Need Help in fixing "Minimum" output. Also, altering the code by not using Arrays.sort 【发布时间】:2015-07-16 10:30:54 【问题描述】:我希望在不使用 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】:不要在循环中对数组进行排序!
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");
这将为您提供适合代码运行系统的任何换行符。
【讨论】:
谢谢@Kevin Walker 先生。呵呵呵呵。以上是关于需要帮助修复“最小”输出。此外,通过不使用 Arrays.sort 来更改代码的主要内容,如果未能解决你的问题,请参考以下文章