`
阿尔萨斯
  • 浏览: 4167376 次
社区版块
存档分类
最新评论

赵雅智_java 二维数组

 
阅读更多

foreach循环

  • 自动遍历数组和集合的每个元素。
  • 格式: for(类型 变量名 : 数组名 | 集合名){ //变量自动迭代访问每个元素... }
    public class TestForEach{
    	public static void main(String[] args){
    		String[] names = {"Georgianna","Jen","Simon"};
    		for (String name : names){
     			System.out.println(name);
    		}
    	}
    }
  • 使用foreach循环遍历数组元素无须获得数组长度,也无须根据索引来访问数组元素。
  • 无须循环条件,无须循环迭代语句,这些部分都由系统来完成。
  • 当使用foreach循环时,通常不要对循环变量进行赋值,虽然没有语法错,但极容易引起错误。
    public class TestForEach{
    	public static void main(String[] args){
    		String[] names = {"Georgianna","Jen","Simon"};
    		for (String name : names){
    			name="Tom";//错误
     			System.out.println(name);
    		}
    	}
    }
    如果希望改变数组元素的值,则不能使用这种foreach循环。

多维数组

多维数组可以理解为由若干低维数组组成的数组,例如,多个一维数组可以组合而成为“二维数组”,多个二维数组组成三维数组…

二维数组:

  • 这5个一维数组的长度,即数组s的第二维的长度为3 。i和j:高维低维,行号列号 二维数组结构
    s[i][j] j=0 j=1 j=2
    i=0 23 45 33
    i=1 12 65 44
    i=2 43 87 76
    i=3 21 34 87
    i=4 54 09 55
  • 声明:类型名 变量名[][]; 或 类型名[][] 变量名; 例如,int[][] s; Student s[][]; 声明完不可以使用
  • 对象的创建和初始化:
    • 静态初始化
      • 格式:类型[][] 数组名={{第0行初值},…,{第n-1行初值}};
      • 例如,int[][] s={{678953}{779868}{576673}{808894}{849290}};
    • 动态初始化
      • 直接为每一维分配空间
        例如,
        int [][] s=new int[5][3];
      • 从最高维开始(必须从最高维开始),分别为每一维分配空间。
        例如,int[][] s=new int[5][]; s[0]=new
        int[3]; s[1]=new int[3];…s[0][0]=67;
      • s[0] = new int[]{123}
  • 每行的元素个数不同,即每行的列数可以不同。
    例如,int[][] s=new int[3][]; s[0]=new int[1]; s[1]=new int[2]; s[2]=new int[3];
  • length属性
    • 可获得二维数组高维的大小,即行数;使用s[i].length属性可获得二维数组每一行的列数。
      for(int i=0;i<s.length;i++){
                 for(int j=0;j<s[i].length;j++)
                        sum+=s[i][j];
         }
public class TestArray{
	public static void main(String[] args){
		int[][] b = {{11},{21,22},{31,32,33}};
		int[][] c = new int[2][3];
		c[0][0] = 1;
		c[0][1] = 2;
		c[0][2] = 3;
		display(b);
		System.out.println(------);
		display(c);
	}
	public static void display(int[][] s){
		for(int i=0;i<s.length;i++){
			for(int j=0;j<s[i].length;j++){
				System.out.print(s[i][j]+"\t");
				}
				System.out.print();
		}
	}
}

11

21 22 23 

31 32 33 

------------------------   

1  2  3

0  0   0    

数组排序

  • 原型:public static void sort(<type>[] a); 例如,int[] a={4,12,0,-5,45,-56}; Arrays.sort(a);
    important java.util.Arrays;
    public class TestArraySort{
    	public static void main(String[] args){
    		int[][] a = {4,12,5,0,-5,43};
    		System.out.println("排序前:");
    		displayInt(a);
    		Arrays.sort(a);
    		System.out.println("排序后:");
    		displayInt(a);
    		
    		String[] name = {"Tom","Kitty","Jerry","葫芦娃"};
    		System.out.println("排序前:");
    		displayString(name);
    		Arrays.sort(name);
    		System.out.println("排序后:");
    		displayString(name);
    	}
    	public static void displayInt(int[][] s){
    		for(int i:s){
    			System.out.print(i+"\t");
    		}
    	}
    	public static void displayString(int[][] s){
    		for(int j:s){
    			System.out.print(j+"\t");
    		}
    	}
    }

    1.编写程序,从键盘输入12个月中每个月的降雨量,计算月平均降雨量,月降雨量和月平均降雨量的偏差,并将结果输出。
    import java.util.Scanner;
    class Ruin {
    	public void system(){
    		Scanner scanner = new Scanner(System.in);
    		double[] ary = new double[12];
    		double sum = 0;
    		for(int i = 0; i < ary.length; i++){
    			System.out.print("请输入降雨量(" + (i+1) + "月):  ");
    			ary[i] = scanner.nextDouble();
    			sum += ary[i];
    		}
    
    		double average = sum / ary.length; 
    		System.out.println("平均值是 " + average);
    
    		for(int i = 0; i < ary.length; i++){
    			System.out.print("每个月值差(" + (i+1) + "月):  ");
    			double cha = ary[i]-average;
    			System.out.println("平均值是 " + cha);
    		}
    	}
    }
    
    class RuinTest {
    	public static void main(String[] args) {
    		Ruin r = new Ruin();
    		r.system();
    	}
    }


    2.假定5个学生参加了三门课的考试,试统计出全部学生的最高分和最低分,以及每个学生的平均成绩,并输出。
    class Student
    {
    	public void test(double[][] a) {
    		double min=a[0][0];
    		double max=a[0][0];
    		for(int i=0;i<a.length;i++) {
    			for(int j=0; j<a[i].length; j++){
    				if(min>a[i][j])
    					min = a[i][j];
    				if(max<a[i][j])
    					max = a[i][j];
    			}
    		}
    		System.out.println("所有人最低分:" + min);
    		System.out.println("所有人最高分:" + max);
    	}
    	public void average(double[][] a){
    		for(int i=0; i<a.length; i++){
    			double sum = 0;
    			for(int j=0; j<a[i].length; j++){
    				sum += a[i][j] ;
    				}
    				double ave=0;
    				ave = sum/a[i].length ;
    				System.out.println("第"+(i+1)+"个学生的平均成绩是" + ave);
    		}
    	}
    }
    class StudentTest{
    	public static void main(String[] args){
    		Student s = new Student();
    		double[][] i= {{90,89.76},{78,98,56},{76,89,87},{98,87,90},{78,87,69}};
    		s.test(i);
    		s.average(i);
    	}
    }
    


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics