小弟写了一段java程序 不知道出错在哪 希望能告诉我
class xzpx{
public static void paixu(int[] a )
{
for(int x = 0;x<a.length - 1;x++)
{
for(int y = 0;y<a.length;y++)
{
if(a[x]>a[y])
{
int temp =a[x];
a[x] = a[y];
a[y] = temp;
}
}
}
}
public static void main(String[] args)
{
int[] s ={1,9,8,7,5,6,78,98,45,65,12,35,95,556,2};
paixu(s);
System.out.println(s);//打印的是S的地址,应该打印的是数组排序之后的结果
}
} --------------------编程问答-------------------- 1 在文件前面加一句:
import java.util.Arrays;
2 把下面这句
System.out.println(s); 改成:System.out.println(Arrays.toString(s));
就好了。
--------------------编程问答-------------------- +1,写个for循环取出a元素也行,Arrays.toString也是这么实现的 --------------------编程问答-------------------- 可以用楼上的数组拷贝的方法,也可以用toStirng()将他的逻辑地址转换成你想要的数 --------------------编程问答-------------------- 看错了。用Array.copyOf()把他拷贝进来。
package day04;
import java.sql.Array;
public class Paixu {
public static int[] paixu(int[] a )
{
for(int x = 0;x<a.length - 1;x++)
{
for(int y = 0;y<a.length;y++)
{
if(a[x]>a[y])
{
int temp =a[x];
a[x] = a[y];
a[y] = temp;
}
}
} int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);
return b;
}
public static void main(String[] args)
{
int[] s ={1,9,8,7,5,6,78,98,45,65,12,35,95,556,2};
int[] b =new int[s.length];
b = paixu(s);
for(int i = 0;i<b.length;i++){
System.out.println(b[i]);}//打印的是S的地址,应该打印的是数组排序之后的结果
}
}
--------------------编程问答-------------------- 我理解就是因为你那个public static void paixu(int[] a )方法无返回值,所以数组a虽然排序了,但是没有返回给某个数组
--------------------编程问答-------------------- class Test1 {
public static void paixu(int[] a) {
for (int x = 0; x < a.length; x++) {
//楼主可以将第二轮内层的比较从外层直接开始,y=x
for (int y = x; y < a.length; y++) {
if (a[x] > a[y]) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
}
}
}
public static void main(String[] args) {
int[] s = { 1, 9, 8, 7, 5, 6, 78, 98, 45, 65, 12, 35, 95, 556, 2 };
paixu(s);
for(int i = 0; i < s.length; i++)
{
System.out.println(s[i]);// 打印的是S的地址,应该打印的是数组排序之后的结果
}
}
}
补充:Java , Java相关