实验要求

写一个java程序,要求数据从大到小输出,用命令行实现输入数据

实验代码

/**
 * Created by zhaohui on 2017/6/16.
 */
public class paixu {
    public static void main(String[] args) {
        int length=args.length;
        int[] arr = new int [length];
        int i=0;
        for( i=0; i<length;i++)
        {
            arr[i]=Integer.parseInt(args[i], 10);
        }
        for(int x=0;x<i;x++)
        {
            for(int y=x+1;y<i;y++)
            {
                if(arr[y]>arr[x])
                {
                    int temp=arr[y];
                    arr[y]=arr[x];
                    arr[x]=temp;
                }
            }
        }
        for(int z=0;z<length;z++)
            System.out.println(arr[z]);
    }
}



代码分析

将命令行接收的数据进行排序,把srgs数组的数据转换为整形数据存放在arr数组中,采用冒泡法进行排序,最后将整个数组输出。

  • 这么做可以减少内存空间的浪费,合理利用内存

int length=args.length;
 int[] arr = new int [length];
  • 因为输入的数据可能有字符型的,强制转换为整形容易进行比较

for( i=0; i<length;i++)
        {
            arr[i]=Integer.parseInt(args[i], 10);
        }

  • 采用冒泡法进行排序
 for(int x=0;x<i;x++)
        {
            for(int y=x+1;y<i;y++)
            {
                if(arr[y]>arr[x])
                {
                    int temp=arr[y];
                    arr[y]=arr[x];
                    arr[x]=temp;
                }
            }
        }

出现错误:

提示错误,发现是println方法使用错误,改正后结果如下:

问题及解决

提示出现这个错误,error:(17,31)java.ioprintStream.pringtln()不适用(实际参数列表和形式参数列表,是因为参数传的多了,函数只接受一个参数,而我传了三个参数。print()和println()都是将其中参数转换成字符串之后,再写入到输入流。而我传入的直接是int数据。print()和println()都是将其中参数转换成字符串之后,再写入到输入流。后来我就换了代码形式,以数组的形式完成实验。刚开始没有意识到这个问题,以至于不知道该怎么解决,看来学习还是要深深扎入到知识中去,出现什么样的情况会有怎样的解决方法都要通过时间获得。

拓展知识

void     println()
// 将“float数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(float f)
// 将“int数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(int i)
// 将“long数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(long l)
// 将“对象o对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(Object o)
// 将“字符数组chars对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(char[] chars)
// 将“字符串str+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
synchronized void     println(String str)
// 将“字符c对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(char c)
// 将“double数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(double d)
// 将“boolean数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void     println(boolean b)
// 将数据oneByte写入到“PrintStream输出流”中。oneByte虽然是int类型,但实际只会写入一个字节