数组
为什么要有数组?
案例:一个养鸡场有六只鸡,他们的体重分别为3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重和平均体重是多少?
1 public class test5 2 { 3 public static void main(String[] args) 4 { 5 //如果没有数组就要定义六个变量,然后算出结果,太麻烦了 6 //现在我们定义一个可以存放6个float类型的数组 7 float arr[] = new float[6]; 8 //给数组的各个元素赋值 9 arr[0] = 3; //3是低精度会自动转成高精度的float类型 10 arr[1] = 5; 11 arr[2] = 1; 12 arr[3] = 3.4f; //java中默认小数是double的所以在后面加上f说明是float类型,避 13 arr[4] = 2; 14 arr[5] = 50; 15 16 float all = 0; 17 for(int i=0;i<6;i++) //遍历数组 18 { 19 all += arr[i]; 20 } 21 System.out.println("总体中是" + all); 22 } 23 }
数组
数组可以存放多个同一类型的数据
数组的语法
//数组的定义1 —— 正常方法 数据类型 数组名[ ] = new 数据类型[ 大小 ]; int a[ ] = new int[ 10 ]; //数组的定义2 —— 没事找事法 //第一步:先声明数组 数据类型 数组名[ ]; 或者 数据类型[ ] 数组名; int a[ ]; 或 int[ ] a; //第二步创建数组 数组名 = new 数据类型[ 大小 ]; a = new int[ 10 ]; //数组的定义3 —— 古板用法 //在定义的时候直接初始化数组,大小有后面给的数的个数决定的 数据类型 数组名[] = { 元素值, 元素值, ... } int a[] = { 2,5,6,7,8,9 } //数组的引用 数组名[ 下标 ]
public class test5 { public static void main(String[] args) { float arr[] = {1.2f,2,3,4,5,7.8f}; float all = 0; for(int i=1;i<arr.length;i++) //可以用length来获取数组的长度 { all += arr[i]; } System.out.println("平均时间: "+(all/arr.length)); } }
古板用法的使用技巧
数组越界的报错
java.lang.ArrayIndexOutOfBoundsException
如何知道数组的大小
System.out.println(arr.length); //这个length是这个数组的成员属性
对象数组
案例:一个养狗场有4只狗,分别是:
名字 | 体重 |
花花 | 4.5kg |
白白 | 5.6kg |
黑黑 | 7.8kg |
红红 | 9.0kg |
请编写一个程序,计算他们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找他们的体重
public class test6 { public static void main(String[] args) { //定义一个可以存放四只狗的对象数组 Dog dogs[] = new Dog[4]; //给每只狗赋值 dogs[0].setName("花花"); dogs[0].setWeight(4.5f); } } class Dog { private String name; public float weight; public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 报错:空指针异常 java.lang.NullPointerException
经典错误——空指针异常
Java中没有指针,但引用的实质就是一个指针,引用里面存放的并不是对象而是该对象的地址,使得该引用指向了对象那个。而“=”在JAVA中并不该被翻译成赋值语句,因为他执行的是传递至的过程。
1 public class test6 2 { 3 public static void main(String[] args) 4 { 5 //定义一个可以存放四只狗的对象数组 6 Dog dogs[] = new Dog[4]; //仅仅创建了四个引用 7 8 //给每只狗赋值 9 dogs[0] = new Dog(); //创建Dog()对象,然后传递给dogs[0]引用 10 dogs[0].setName("花花"); 11 dogs[0].setWeight(4.5f); 12 } 13 14 } 15 class Dog 16 { 17 private String name; 18 public float weight; 19 public float getWeight() { 20 return weight; 21 } 22 public void setWeight(float weight) { 23 this.weight = weight; 24 } 25 public String getName() { 26 return name; 27 } 28 public void setName(String name) { 29 this.name = name; 30 } 31 }
正确的代码
1 import java.io.*; 2 3 public class test6 4 { 5 public static void main(String[] args) throws Exception 6 { 7 //定义一个可以存放四只狗的对象数组 8 Dog dogs[] = new Dog[4]; //仅仅创建了四个引用 9 //从控制台输入各个狗的信息 10 InputStreamReader isr=new InputStreamReader(System.in); 11 BufferedReader br= new BufferedReader(isr); 12 for(int i=0 ; i<4 ; i++) 13 { 14 dogs[i] = new Dog(); 15 System.out.println("请输入狗的名子"); 16 //从控制台读取狗名 17 String name = br.readLine(); //之后会讲异常 18 //讲名字赋值给对象 19 dogs[i].setName(name); 20 System.out.println("请输入狗的体重"); 21 String s_weight = br.readLine(); 22 float weight = Float.parseFloat(s_weight);//String->float 23 //讲名字赋值给对象 24 dogs[i].setWeight(weight); 25 } 26 //计算总体重 27 float allWeight = 0; 28 for(int i=0;i<4;i++) 29 { 30 allWeight+=dogs[i].getWeight(); 31 } 32 //计算平均体重 33 float avgWeight = allWeight/dogs.length; 34 System.out.println("总体重="+allWeight+"平均体重"+avgWeight); 35 } 36 37 } 38 class Dog 39 { 40 private String name; 41 public float weight; 42 public float getWeight() { 43 return weight; 44 } 45 public void setWeight(float weight) { 46 this.weight = weight; 47 } 48 public String getName() { 49 return name; 50 } 51 public void setName(String name) { 52 this.name = name; 53 } 54 }
案例的全部代码
继承
原文地址:https://www.cnblogs.com/houzhaohui/p/9661321.html
时间: 2024-10-06 23:03:35