java 命令行参数、随机数Math.random的用法及使用误区、Array.sort()的用法、Arrays类中的方法

前面已经看到多个使用java数组的示例。每一个Java应用程序都有一个带String [] args参数的main方法。这个参数表明main方法将接受一个字符串数组,也就是命令行参数。

package 第3章;
import java.util.*;
public class 第3章a
{
    public static void main(String[] args)
    {
       //命令行参数
        /* 前面已经看到多个使用java数组的示例,每个java应用程序都有一个带String args[]参数的main方法。这个参数表明main方法将接受一个字符串数组String[] 也就是命令行参数

        */
        if(args[0].equals("h"))
            System.out.println("Hello");
        else if(args[0].equals("g"))
            System.out.println("google");
        for(int i=1;i<args.length;++i)
            System.out.println(args[i]);
    }          
}

如果使用下面这种形式运行下列程序:
java 第3章a hello,boy
数组排序
想对数值型数组进行排序,可以使用Arrays类中的sort方法

使用Arrays类中的sort方法,需要:
import java.util.Arrays;
或者:
import java.util.*;
简述Arrays类中的sort方法:
**sort**
public static void sort(long[] a)
对指定的 long 型数组按数字升序进行排序。该排序算法是一个经过调优的快速排序法。
**sort**
public static void sort(long[] a , int fromIndex , int toIndex)

对指定 long 型数组的指定范围按数字升序进行排序。排序的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则排序范围为空。)

数组的初始化方法

package 第3章;
import java.util.*;
public class 第3章a
{
    public static void main(String[] args)
    {

       int[] a={1,2,3,4,5};  //第一种初始化方法:同C语言
       int [] b=new int[5];  //第二种初始化方法:先声明,后初始化
       b=new int[] {1,3,5,2,9};
     //  a=new int[] {1,3,2,9,8};   //
       Arrays.sort(a);
       System.out.println(Arrays.toString(b));  //不是Arrays.toString[a],而是Arrays. toString(a);使用Arrays.toString需要import java.util.*;
    }          
}

数组的初始化方法,使用原有的C语言初始方法最方便:
int[] a={1,2,4,5,6};

package 第3章;
import java.util.*;
public class 第3章a
{
    public static void main(String[] args)
    {

        int[] a={1,2,4,5,6};  //使用这种!同C语言,只是由int A[]={1,2,3,4,5},变为了int[] B={1,2,3,4,5}
        int[] b=new int[] {1,2,3,4,5,5};
        int[] c;
        c=new int[] {1,2,3,4,5,8};
     //  a=new int[] {1,3,2,9,8};   //
       Arrays.sort(a);
       System.out.println("b= "+Arrays.toString(b));  //不是Arrays.toString[a],而是Arrays. toString(a);使用Arrays.toString需要import java.util.*;
       System.out.println("a= "+Arrays.toString(a)); 
       System.out.println("c="+Arrays.toString(c)); 
    }          
}

随机数Math.random的用法,有注意事项:
不是int r=(int)(Math.random())*n;
而是 random*n后整体强制转化

package 第3章;
import java.util.*;
import java.Math.*;
public class 第3章a
{
    public static void main(String[] args)
    {
       //Scanner 属于import java.util.Scanner;,可以为import java.util.*;
        Scanner in=new Scanner(System.in);
        System.out.println("how many numbers you need to select?");
        int k=in.nextInt();
        System.out.println("how many numbers you  select from?");
        int n=in.nextInt();
        int[] number=new int[n];
        int[] result=new int[k];
        for(int i=0;i<number.length;++i)
        {
            number[i]=i+1;
        }
        for(int j=0;j<k;++j)
        {
            int r=(int)(Math.random()*n); //注意,不是int r=(int)(Math.random())*n;而是 random*n后整体强制转化为(int),否则随机生成的数有问题
            result[j]=number[r];
            number[r]=number[n-1];
            --n;
        }
        Arrays.sort(result);  //Arrays.sort(数组)返回void,也就是修改参数数组,但是不返回数组
                              //所以Arrays.sort不能用int[] hello=Arrays.sort(result); 因为Array不返回数组

        System.out.println(Arrays.toString(result));
    }          
}

Arrays类中的方法

Arrays类属于java.util.*;
/*
        static String toString(type[] a)   //aint char boolean类型的数组
        static type   copyOf(type[] a,int length) //aint char boolean类型的数组
        static type   copyOfRange(type[] a,int start,int end)  //有范围的复制,不包括endaint char boolean类型的数组
        static void sort(type[] a)  //aint char boolean类型的数组
        static int binarySearch(type[] a,type v)  //aint char boolean类型的数组
        static int binarySearch(type[] a,int start,int end,type v)  //aint char boolean类型的数组,查找成功,返回位置,查找不成功,返回一个负数值 
        static void fill(type[] a,type v)  //aint char boolean类型的数组
        static boolean equals(type[] a,type[] b)  //aint char boolean类型的数组,如果ab完全相同,返回true,否则,返回false
        总结:Arrays类中的所有方法都可以对int double char boolean操作
             Arrays类方法常用的有 toString copyOf copyOfRange sort binarySearch 有范围的binarySearch fill equals  */
package 第3章;
import java.util.*;
public class 第3章a
{
    public static void main(String[] args)
    {
       /* 多维数组使用多个下标来访问数组元素,他适用于表示表格或者更复杂的排列形式
        在java中,声明二维数组:

        */
        double [][] a;
        a=new double[A][B];
        //第二种方法
        double[][] b={ 
            {1,2},
            {3,5},
            {2,6}
        };
        //一旦数组被初始化,就可以利用两个方括号访问每一个元组,例如:b[0][0]
        for(int i=0;i<a[0].length;++i)   //访问第0行中的每一个元素
        {
            a[0][i]=1000;
        }  
        for(int j=1;j<a[0].length;++j)
        {

        }
        //for each 循环语句遍历二维数组
        for(double[] row:a)
        {
            for(double[] value:row)
            {
                //
            }
        }
        //如果想快速打印一个二维数组的数据元素列表,可以调用Arrays类的deepToString方法,import java.util.*;
        System.out.println(Arrays.deepToString(a));
    }          
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值