• Java菜鸟学习笔记--数组篇(二):数组实例&args实例


    基本类型实例


    	//1.定义一个一维数组,先声明,在分配空间
    	int []number;//生命,没有初始化,number=null
    	
    	number=new int[5];//初始化为默认值,int默认值为0
    	//第二步创建内存空间,在堆空间创建长度为5数组,number里面存储的是第一个内存地址
    		


    引用类型实例



    Person[] my=new Person[3];//
    	/*
    		1.my实在栈区,而Person数组在堆区
    		2.堆空间有三个连续内存空间里面分别存有三个引用,并且默认初始化为null
    	
    	*/	

    基本与引用区别图示


    (下图摘自疯狂java,版权归疯狂java所有)



    Args实例练习



    1.在Main函数中,main(String[ ] args)中的args有什么作用?

    
    
    String args[ ]或者String[ ] args表示给主方法传一个字符串数组. 而args是一个字符串数组的变量名,不是关键字,是arguments的缩写,只是一个默认名,一般都习惯性照写.
    //1.数组练习
    //2.args[] 功能
    package me.array;
    
    public class TestArray2{
    	
    	public static void main(String[] args){
    		
    	//输出
    		int[] a={2,2,3,4,5,2,3,5,6,2};
    
    		for(int i=0;i<a.length;i++){
    		
    			System.out.println("a["+i+"] = "+a[i]);
    		
    		}
    		
    		for(int i=0;i<args.length;i++){
    			
    			System.out.println("args["+i+"] = "+args[i]);
    		}
    		//直接java 这个不显示什么
    		/*然后测试 :
    		yg@Gino:~/Desktop/code$ java me.array.TestArray2 aaa bbb ccc
    		a[0] = 2
    		a[1] = 2
    		a[2] = 3
    		a[3] = 4
    		a[4] = 5
    		a[5] = 2
    		a[6] = 3
    		a[7] = 5
    		a[8] = 6
    		a[9] = 2
    		args[0] = aaa
    		args[1] = bbb
    		args[2] = ccc
    		*///args可以把java后面的参数挨个放入数组中,
    
    	}
    
    }


    2.实例:写一个程序让 java  me.args.TestArgs 1 + 2 可以返回计算结果 3.0


    //写一个程序让 java  me.args.TestArgs 1 + 2 可以返回3.0
    package me.args;
    
    public class TestArgs{
    	
    	static void tip(){
    		
    		System.out.println("-----------------------------------------------------------------");
    		System.out.println("
    温馨提示:
    这个一个带参数的计算程序参");
    		System.out.println("格式为 java me.args.Args n1 op n2");
    		System.out.println("n1 --第一个数
    OP --加减乘除任意操作符 
    n2--第二个数");
    		System.out.println("
    1.输入数据是请注意n1 OP n2之间的空格
    2.n1n2请输入数字");
    		System.out.println("------------------------------------------------------------------");
    	}
    	
    	public static void main(String[] args){
    			
    		//写一个程序让 java  me.args.TestArgs 1 + 2 可以返回3.0
    		
    		//判断参数,是否到三个
    		if(args.length<3){
    			
    			System.out.println("Input Error!");
    			System.out.println("java me.args.TestArgs "n1" "op" "n2"");
    			TestArgs.tip();
    			System.exit(-1);//退出程序,-1表示错误退出,0表示非法推出
    		}
    		//把String类型转换成double类型 然后再计算
    		double[] number=new double[2];
    		
    		//可能抛出NumberFormatException,判断第一个字符可不可以转换成数字
    		try{
    		number[0]=Double.parseDouble(args[0]);
    		}catch(NumberFormatException ea){
    			
    			System.out.println("----------n1 Number INput Error!--------------");
    			ea.printStackTrace();
    			TestArgs.tip();
    			System.exit(-1);
    		
    		}
    		
    		//number[1]=Double.parseDouble(args[2]);不健壮,不能判断非法输入
    		//用try结构判断n2输入是否合法,不合法就告诉用户,并且抛出异常
    		try{
    		number[1]=Double.parseDouble(args[2]);
    		}catch(NumberFormatException ea){
    			
    			System.out.println("----------n2 Number INput Error!--------------");
    			ea.printStackTrace();
    			TestArgs.tip();
    			System.exit(-1);
    		
    		}
    		
    		
    		
    		switch(args[1]){
    			
    			case "+":
    				System.out.println(+number[0] + number[1]);
    				break;
    			case "-":
    				System.out.println(number[0] - number[1]);
    				break;
    			case "*":
    				System.out.println(number[0] * number[1]);
    				break;
    			case "x":
    				System.out.println(number[0] * number[1]);
    				break;
    			case "/":
    				System.out.println(number[0] / number[1]);
    				break;
    			case "%":
    				System.out.println(number[0] % number[1]);
    				break;
    			default :
    				System.out.println("Error Operator");
    				TestArgs.tip();
    				break;
    			
    		}
    		
    			
    	}
    	
    }


    测试结果:





    3.实例:运用args可以对输入参数进行排序


    //1.改写,实现从命令行上面读取 5个数,2.排序好,3.输出
    package me.array;
    
    public class TestArray3{
    	
    	//冒泡排序,经典方法
    	public static void bubbleSort(int[] number){
    		
    		//排序部分
    		
    		int temp;
    		//假如第一次 i=8,则比较 下标为 0~8(9个数嘿嘿),前面两两依次比较 
    		//当i=7,下标为8已经是最大的一个数,在比较0~7(前8个数),依次两两比较
    		for(int i = number.length-1;i >= 0; i--){
    			
    			for(int j =0;j < i;j++){
    				
    				if(number[j]>number[j+1]){
    						
    					temp=number[j+1];
    					number[j+1]=number[j];
    					number[j]=temp;
    					
    				}
    				
    			}
    			
    		
    		}
    	
    		//输出部分
    		
    		System.out.println("排序后顺序为:");
    		for(int i = 0;i < number.length;i++){
    			
    			System.out.println(number[i]);
    			
    		}
    	}
    	
    	public static void main(String[] args){
    		
    		//1.读进来
    		//2.转成int型
    		//3.排序好
    		//4.输出
    		
    		//判断是否带了5个参数
    		if(args.length <= 1){
    		
    			System.out.println(args.length);
    			System.out.println("请在参数处依次输入2个数以上");
    			System.exit(-1);
    			
    		}
    		//转成int型
    		int[] number=new int[args.length];
    		// 转换好放入数组
    		for(int i = 0 ;i < args.length;i++){
    				
    			//转换过程,如果出现异常就catch并输出信息
    			try{
    				number[i]=Integer.parseInt(args[i]);
    			}catch(NumberFormatException ea){
    				
    				System.out.println("----------输入入数字有误-----------------");
    				System.out.println("错误信息如下:");
    				ea.printStackTrace();
    				System.out.println("------------------------------------------------");
    				System.exit(-1);
    			}
    		
    	
    		}
    		//输出数组中的
    		System.out.println("您输入的数字为:");
    		for(int i = 0;i < number.length;i++){
    			
    			System.out.println(number[i]);
    			
    		}
    		//调用冒泡排序方法
    		TestArray3.bubbleSort(number);	
    		
    
    	}
    
    }

    测试结果:





    作者:YangGan
    出处:http://blog.csdn.net/incyanggan
    本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).

  • 相关阅读:
    python报以下错误:TypeError: 'int' object is not subscriptable
    C# Func与Action
    C#调用C++的DLL 尝试写入受保护的内存
    C#调用C++的dll EntryPointNotFoundException
    C# 拖拽事件
    C#操作Access数据库中遇到的问题(待续)
    Winform 中写代码布局中遇到的控件遮盖问题
    thinkphp6执行流程(一)
    xdebug调试过程中apache500超时
    禁用phpcookie以后如何使用Session
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3236868.html
Copyright © 2020-2023  润新知