黑马程序员技术交流社区
标题:
数组排序的输出问题
[打印本页]
作者:
陈冲
时间:
2012-7-8 09:46
标题:
数组排序的输出问题
本帖最后由 陈冲 于 2012-7-8 10:06 编辑
class ArrayDemo5
{
public static void main(String[] args)
{
int[] arr={34,19,11,109,3,56};
selectSort(arr);
getArr(arr);
}
/*
选择排序:
思路:
1.第一个元素与后边的所有元素比较,将最小值放在arr[0],比较次数为arr.length-1
2.需要多轮排序,且每次的比较次数 -1
3.需要一个变量作为中转
4.返回排好序的数组
*/
public static void selectSort(int[] arr)
{
for (int i=0;i<arr.length-1 ;i++ )
for (int j=i+1;j<arr.length ;j++ )
{
if (arr[i]>arr[j])
{
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
//getArr(arr);
}
/*
遍历取出数组中的元素
*/
public static void getArr(int[] arr)
{
for (int i=0;i<arr.length ;i++ )
{
System.out.print(arr[i]+','); //使用System.out.print(arr[i]+','),输出结果为47556378100109,而使用System.out.print(arr[i]+“,")则能正常输出3,11,19,34,56,109,
}
System.out.println();
}
}
复制代码
为什么在getArr函数中,
使用System.out.print(arr+','),输出结果为47556378100109,而使用System.out.print(arr+“,")则能正常输出3,11,19,34,56,109,在这里使用' '和" ",有什么区别
作者:
孙飞
时间:
2012-7-8 09:52
标题:
,
本帖最后由 feigecal 于 2012-7-8 10:05 编辑
''是字符""是字符串,+在字符间用于加法运算在字符串中表示连接作用,第一种写法会把,号提升,输出它的ASCLL值,是44再加上你要输出的数做为结果输出
作者:
刘美丽
时间:
2012-7-8 09:53
arr[i]是一个整数型的值,而‘,’是一个char类型的值,int类型+char类型=int类型,所以你用‘,’连接后,得到的是int类型的值,而int类型+string类型不能进行转化,只能在int类型后进行添加,所以会输出你想要的正确结果
作者:
刘美丽
时间:
2012-7-8 09:53
arr[i]是一个整数型的值,而‘,’是一个char类型的值,int类型+char类型=int类型,所以你用‘,’连接后,得到的是int类型的值,而int类型+string类型不能进行转化,只能在int类型后进行添加,所以会输出你想要的正确结果
作者:
杨_扬
时间:
2012-7-8 09:54
很简单,双引号引起来的JAVA认为是字符串,整数和字符串执行+运算,就相当于将整数的字面值和字符串进行连接,因此打印出来的结果是你想要的。
用单引号引起来的,JAVA识别为char类型,int和char类型做加法char类型被按照ASCII码的数值强转为int类型,','的值是44,所以打印出来的就是那一长串数字,你看,数组的第一个值是3,3+44刚好是47,对吧,一次类推,你验算一下就知道了
作者:
丁二跃
时间:
2012-7-8 09:56
这是因为你前面的arr[i] 是一个 int 型 int 与chr 进行运算时会自动把char转换成一个int 型
java 中 ' '单引号表示char," " 双引号表示String
你可以单独试一下
public class Test {
public static void main(String[] args) {
System.out.println((int)',');//这里输出44
System.out.println(1+',');//这里输出45
}
}
作者:
万宝东
时间:
2012-7-8 10:03
System.out.print(arr[i]+',');
这么写最后输出的结果是arr[i]加上 , 的ASCII值,而 , 的ASCII值是44,所以最后的打印结果及时47556378153100。
你试试用正常打印结果,每个数加上44,就会得出上面的结果
作者:
罗磊
时间:
2012-7-8 10:07
public static void getArr(int[] arr)
{
for (int i=0;i<arr.length ;i++ )
{
System.out.print(arr
+',');
}//使用System.out.print(arr
+','),
((arr【i】+',')意思是将数组元素打印时候加上 逗号(,)的aASCII码值,而逗号的ASCII值为 44
// 所以每次输出的结果(3+44 11+44 。。。) 由于你没有用什么分隔的修饰
输出结果为47556378153100
//
,而使用System.out.print(arr
+“,")
(使用双引号代表该字符为字符串(即 逗号),所以此时的+相当与和 (即3和逗号 11和逗号...))
则能正常输出3,11,19,34,109,56,
System.out.println();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2