Java学习日记基础篇(七) —— 数组、排序

数组

为什么要有数组?

案例:一个养鸡场有六只鸡,他们的体重分别为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-08-03 16:58:32

Java学习日记基础篇(七) —— 数组、排序的相关文章

Java学习日记基础篇(六)—— 抽象类、接口、final

抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 1 public class test1 2 { 3 public static void main(String[] args) { 4 } 5 } 6 7 class Animal 8 { 9 String name; 10 int age; 11 12 //动物会叫 13 public void cry() 14 { 15 System.o

java学习日记-基础-随机数组的求余运算

时间是2017年5月6日,青年节刚过,坐标上海,沪漂2个月. 就这样简短地开始吧.                                by:slowcity [案例分析1] 要求定义一个int 型数组a,包含100 个元素,保存100个随机的4 位数.再定义一个int 型数组b,包含10 个元素.统计a 数组中的元素对10 求余等于0 的个数,保存到 b[0]中:对10 求余等于1 的个数,保存到b[1]中,--依此类推 一般看到这类的最基本的思路:1先建立一个含数组存随机四位数 2

Lua 学习之基础篇七&lt;Lua Module,Package介绍&gt;

Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require (modname) 加载一个模块. 这个函数首先查找 [package.loaded] 表, 检测 modname 是否被加载过. 如果被加载过,require 返回 package.loaded[modname] 中保存的值. 否则,它会为模块寻找加载器. require 遵循 [package.

小码蚁java学习日记——起航篇

很久很久以前,大约公元2005年就知道知晓java. 一直都有过了解,但从未系统学习. 今天,就在今天,这是一个伟大的日子,伟大的12月18号,我终于坚定了利用工作之余学习java的决心,一个phper 就要变身了. 首先选个方向吧,其实这个好真麻烦,近水楼台先得月,还是写web吧. 好吧,今天就这么多! 以后还希望大家多多指点小的,助我在java的道路上越走越远.

Java学习笔记——基础篇

Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习心得: *初始化 *包.权限控制 1.包(package)概念的引入是为了防止类名冲突.package语句要作为java源文件的第一条语句. 2.两个类在同一个包中,可以相互调用:两个类在不同的包中,若想引用则必须通过import语句导入,格式为:import 包名.子包名.类名. 3.如果在程序中同时导入了两个包的同类名,则在使用时必须明确的写

java学习日记-基础-字符串内容替换

代码和内容均来自网络,非原创,自己就是对代码进行了一些简单的注释,帮助自己理解. import java.util.Scanner; /** * * @author sunzc 转换字符串,大写变小写,小写变大写,数字不变,其他变为* */ public class Transfer { public static void main(String[] args) { // String str = "ABC123abcfadfjbJBHJHJDsa"; String str = &q

java学习日记-基础-列出2~100内的素数

素数的概念:一个整数如果只能整除1和它本身,那么这个整数就是一个素数 方法一:素数是除去能被2整除.3整除.5整除.7整除的整数,但包含2,3,5,7 public class Sushu { public static void main(String[]args){ String str="2 3 5 7 "; for(int i=2;i<=100;i++){ if(i%2==0||i%3==0||i%5==0||i%7==0 ){ //:逻辑判断,筛选 continue;

学习java随笔第六篇:数组

一维数组 创建一维数组并输出 public class OneDimensionalArray { public static void main(String argas[]) { int i[]=new int[10]; for(int j=0;j<i.length;j++) { i[j]=j; System.out.println(i[j]); } } } 多维数组 创建多维数组并输出 public class MultiDimensional { public static void m

Java学习日记(一)基础

标识符: 由26个英文字母大小写,数字:0-9 符号:_ $ 组成 定义合法标识符规则: 1.数字不可以开头. 2.不可以使用关键字. 3.Java中严格区分大小写. Java中的注释格式: 单行注释: 格式: //注释文字 多行注释: 格式: /* 注释文字*/ 文档注释: 格式:/** 注释文字 */ 常量: 常量表示不能改变的数值. java中常量的分类: 1.整数常量.所有整数 2.小数常量.所有小数 3.布尔型常量.较为特有,只有两个数值.true 和false. 4.字符常量.将一个