• 排序实验1--从大到小排序


    实验要求

    写一个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类型,但实际只会写入一个字节
    
    
  • 相关阅读:
    Docker实战第一天(Docker虚拟化安装)
    Linux下远程桌面连接windows
    运维自动化工具ansible(模块使用)
    运维自动化工具ansible(安装)
    MongoDB学习(二)mongoDB常用命令
    MongoDB学习(一)Centos6.5下安装mongoDB
    AWK用法详解(转载)
    sed用法详解(转载)
    centos6.5部署subversion(svn)
    mysqlAB复制(自动同步)
  • 原文地址:https://www.cnblogs.com/zhaohui801/p/7029377.html
Copyright © 2020-2023  润新知