黑马程序员技术交流社区
标题:
数组排序究结了我一下午
[打印本页]
作者:
徐宏波
时间:
2012-3-12 19:52
标题:
数组排序究结了我一下午
本帖最后由 徐宏波 于 2012-3-19 12:48 编辑
class SelectSort
{
public static void SelectSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arr) {
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length)
{
System.out.print(arr[x]+", ");
}
else
System.out.println(arr[x]);
}
}
public static void main(String[] args)
{
int[] arr=new int[]{1,2,3,8,7,6,12,10};
printArray(arr);
SelectSort(arr);
printArray(arr);
}
}
数组按从小到大的顺序排列,然后与未排序之前一起打印出来,分两行..但我打印完不换行,都在一行里了..可是我是用的println啊,,帮我看下怎么回事了.我弄了老半天了
作者:
徐宏波
时间:
2012-3-12 19:55
我吃饭去,,希望谁帮我看一下啊,,回来不行我就得发群里了..{:soso_e118:}
作者:
张希强
时间:
2012-3-12 20:00
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length)
{
System.out.print(arr[x]+", ");
}
else
System.out.println(arr[x]);
}
错在这个里面,x永远不可能等于arr.length所以这个System.out.println(arr[x]);根本没有执行
if(x!=arr.length)换成 if(x!=arr.length-1)就好了。
作者:
赵孟恩
时间:
2012-3-12 20:05
class SelectSort
{
public static void SelectSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arr) {
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length) // 你这句写得不合理, 你想最后一个换行 那么应该是 x != arr.length-1 要不你换行的那句根本不执行
{
System.out.print(arr[x]+", ");
}
else
System.out.println(arr[x]);
}
}
public static void main(String[] args)
{
int[] arr=new int[]{1,2,3,8,7,6,12,10};
printArray(arr);
SelectSort(arr);
printArray(arr);
}
}
作者:
刘宁
时间:
2012-3-12 20:06
本帖最后由 刘宁 于 2012-3-12 20:11 编辑
public static void printArray(int [] arr)
{
System.out.print("[");
for ( int x=0; x<arr.length; x++)
{
if (x!= arr.length-1)
System.out.print(arr[x]+", ");
else
System.out.println(arr[x]+"]");
}
}
这个是正确的方式。
if(x!=arr.length) 不对。
欢迎交流指正。
作者:
冯林
时间:
2012-3-12 20:10
public static void printArray(int[] arr) {
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length)
{
System.out.print(arr[x]+", ");
}
else
System.out.println(arr[x]);
}
}
当x==arr.length时,for循环里的条件已经不成立了,已经停止了for循环。自然执行不到换行语句。把判断条件改为x!=arr.length-1
作者:
倪鹏博
时间:
2012-3-12 20:28
子曰:楼上的同学说的对啊!
数组的长度是arr.length,但是数组的下标是从0开始的,所以最后一个元素的下标是arr.length-1 !
你就错在把数组的最后一个元素下标当成arr.length了。
作者:
徐宏波
时间:
2012-3-13 02:42
张希强 发表于 2012-3-12 20:00
for(int x=0;x
{:2_30:}懂了,谢谢各位了,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2