JavaStudy07 Scanner类、Random类、ArrayList 类

20200320
1、现在是晚上8点,听着王嘉尔的新歌100 Ways(吹爆!),突然看到CSDN弹窗通知JavaStudy06博客被点赞了还被关注了,第一位粉丝耶,谢谢你!,开心O(∩_∩)O~~(一个被被鼓励就干劲十足的人hhh)那今晚还早,再听一遍歌我再学会!
2、晚上xp哥也来关心了我的学习情况,加油哦!(你不是一个人在战斗!)
20200321
1、看了B站关于GitHub优秀项目的介绍,想学的又多了,时候未到,忍住,专注当前学习任务!
2、今天浪了浪了,休闲时间多于学习时间,明天0708完成!
20200322
1、突然想清楚了要找大公司or小公司:去大公司,哪怕是实习工资低。很多问题无法一时就做决定,积累得多了做着做着就有了答案。就像现在我还不知道想去哪个城市的哪家公司,了解得越多答案会越清晰。

今日内容和教学目标

在这里插入图片描述

第1章 API

概述

应用程序接口

API使用步骤


  • 1、 索引搜要学习的类
    在这里插入图片描述
    2、看包。java.lang下的类不需要导包,其他需要。
    3、看类的解释和说明。
    4、 学习构造方法。
    在这里插入图片描述

第2章 Scanner类

2.1 什么是Scanner类

实现键盘输入数据到程序中,一个可以解析基本类型和字符串的简单文本扫描器。备注System.in 系统输入指的是通过键盘录入数据。

2.2 引用类型使用步骤

导包

格式

import.包路径.类名称 ;

不需写导包语句:如果调用类与此类同包或者属于java.lang包,
其他都要写导包语句。
举例

import java.util.Scanner;

创建对象

格式

数据类型 变量名 = new 数据类型(参数列表);

举例

Scanner sc = new Scanner(System.in);

调用方法

格式

变量名.成员方法名称

举例

int num = sc.nextInt();

2.3 Scanner使用步骤

在这里插入图片描述

查看类

看属于哪个包

查看构造方法

看对应参数

查看成员方法

看点啥

举例
在这里插入图片描述

2.4 练习

求和

在这里插入图片描述

package demo01;
//求输入两数之和
import java.util.Scanner;

public class Test01ScannerSum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个数");
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("两个数的和为:"+(a+b));
    }

}

取最值

在这里插入图片描述

package demo01;
//输入三个数,输出最大值
import java.util.Scanner;
public class Test02ScannerMax {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入三个数");
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int[] num = {a, b, c};
        int Max = num[0];//先给Max赋初值才能比较
        for (int i = 1; i < num.length; i++) {
            Max = (num[i]>Max?num[i]:Max);
        }
        System.out.println("这三个数的最大值是:"+ Max);
    }
}

2.5 匿名对象【了解】

概念

匿名对象 :没有变量名的对象,只能使用一次
格式:

new 类名(参数列表);
// Scanner sc = new Scanner(System.in); 等于new Scanner(System.in); 
//Scanner sc = new Scanner(System.in);  int num = sc.nextInt();等于 int num =new Scanner(System.in).nextInt();

应用场景

  1. 创建匿名对象直接调用方法,没有变量名。
  2. 一个匿名对象,只能使用一次。
  3. 匿名对象可以作为方法的参数和返回值

匿名对象可以作为方法的参数和返回值

package demo01;
//普通写法和匿名类传达返回比较
//任何数据类型都可以传参返回值
import java.util.Scanner;

public class Demo02Anonymous {
    public static void main(String[] args) {
//        //普通
//        Scanner sc = new Scanner(System.in);
//        int num = sc.nextInt();

        //匿名对象
//        int num =new Scanner(System.in).nextInt();
//
//        //普通传参
//        Scanner sc = new Scanner(System.in)
//        methodParam(sc);
//
//        //匿名传参
//        methodParam(new Scanner(System.in));
        Scanner sc = methodReturn();
        int num = sc.nextInt();
        System.out.println(num);
    }
    public static void methodParam(Scanner sc){
        int num = sc.nextInt();
        System.out.println(num);
    }
    public static Scanner methodReturn(){
//        //普通返回
//        Scanner sc = new Scanner(System.in);
//        return (sc);
        //匿名返回
        return (new Scanner(System.in));
    }
}

第3章 Random类

3.1 什么是Random类

例用于生成伪随机数。
以下代码使用户能够得到一个随机数:

Random r = new Random();
int i = r.nextInt();

3.2 Random使用步骤

在这里插入图片描述

3.3 练习

获取随机数

获取1-n之间的随机数
在这里插入图片描述

package demo01;
//题目:获取1-n的随机数
/*思路:
1、定义int变量n,随意赋值
2、使用Random,导包、创建、使用
3、如果写9是[0,9),要想1~10,整体加1即可
4、打印随机数字
*/
import java.util.Random;
public class Test03Random {
    public static void main(String[] args) {
        int n = 5;
        Random r = new Random();
        int result = r.nextInt(n)+1;
        System.out.println(result);
    }
}

猜数字小游戏

游戏开始时,会随机生成一个1-100之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。
在这里插入图片描述

package demo01;
/*游戏开始时,会随机生成一个1-100之间的整数 number 。
玩家猜测一个数字 guessNumber ,会与 number 作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。*/

/*思路:
* 1、int number
* 2、使用Random类
* 3、r.nextInt(100)+1
* 4、int gussNumber
* 5、使用Scanner类 二分法猜测快
* 6、比较大小输出提示 循环次数确定用for直到相等 循环次数不确定 用while(true)break; 
*/

import java.util.Random;
import java.util.Scanner;

public class Test04RandomGuess {

    public static void main(String[] args) {

          Random r = new Random();
          int number = r.nextInt(100) + 1;
          while(true){
              System.out.println("请猜测一个数字");
              Scanner sc = new Scanner(System.in);
              int guessNumber = sc.nextInt();
              if (number > guessNumber) {
                  System.out.println("猜小了");
              } else if (number < guessNumber) {
                  System.out.println("猜大了");
              } else {
                  System.out.println("猜对了!");
                  break;
              }
          }
          System.out.println("游戏结束!");
    }
}

第4章 ArrayList类

4.1 引入——对象数组

使用学生数组,存储三个学生对象
在这里插入图片描述

package demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、定义成员变量
2、定义无参有参构造方法
3、Setter、Getter方法
*/
//定义学生类
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
//调用学生类
package demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、创建长度为3的数组
2、创建对象
3、对象赋值给数组
4、打印数组
    4.1打印数组地址
    4.2打印数组内容
*/
/*注意事项:
数组的缺点:得先明确长度,一旦创建,运行期间长度不可改变
ArrayList集合可以解决这个缺点
*/
public class Demo01Array {
    public static void main(String[] args) {
        //1、创建数组
        Student[] array = new Student[3];
        //2、创建对象
        Student one = new Student("张三",12);
        Student two = new Student("李四",16);
        Student three = new Student("王五",20);
        //3、对象赋值给数组
        array[0] = one;
        array[1] = two;
        array[2] = three;
        //4、打印数组
            //4.1打印数组地址
        System.out.println(array[0]);//地址值
        System.out.println(array[1]);//地址值
        System.out.println(array[2]);//地址值
            //4.2打印数组内容
        System.out.println(array[0].getName());//张三
        System.out.println(array[0].getAge());//12
		    //4.3遍历数组内容
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i].getName()+"-------"+array[i].getAge());
        }

    }
}

4.2 什么是ArrayList类

是长度可变的数组。
ArrayList代表泛型,泛型:装在集合中的元素统一类型。

注意:泛型只能是引用类型,不能是基本类型

注意:ArrayList集合直接打印得到的不是地址值而是内容。如果内容为空,得到的是空括号:[]

4.3 ArrayList使用步骤

在这里插入图片描述

查看类

查看构造方法

查看成员方法

在这里插入图片描述

举例

package demo02;
//题目:用ArrayList存3个对象
/*思路:
1、使用ArrayList类创建对象
2、调用add方法存3个对象
3、打印集合
*/

import java.util.ArrayList;

public class Demo02ArrayList {
    public static void main(String[] args) {
        //1、使用ArrayList类创建对象
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);
        //2、调用add方法存3个对象
        list.add("小猫");
        list.add("小狗");
        list.add("小狮子");
        //3、打印集合
        System.out.println(list);
    }
}

4.4 常用方法和遍历

对于元素的操作,基本体现在——增、删、查。

常用方法

常用的方法有:

  • public boolean add(E e) :将指定的元素添加到此集合的尾部。
  • public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素
  • public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
  • public int size() :返回此集合中的元素数。返回长度,遍历集合时,可以控制索引范围,防止越界。

举例

在这里插入图片描述

package demo02;
//常用方法
/*1、增 add()
  2、查元素 get()
  3、删 remove()
  4、查长度 size()
  5、遍历方法,以get()为例
  */
import java.util.ArrayList;

public class Demo03ArrayList {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //1、方法
         //1.1、增
        list.add("苹果");
        list.add("草莓");
        list.add("山竹");
        list.add("哈密瓜");
        list.add("芒果");
        list.add("无");
        System.out.println(list);
         //1.2、查元素
        String name = list.get(0);
        System.out.println("0号索引位置的水果是:"+name);
         //1.3、删
        String whoRemove = list.remove(5);
        System.out.println("删除5号索引位置的水果是:"+ whoRemove);
        System.out.println(list);
         //1.4、查长度
        System.out.println("集合长度是"+list.size());
        System.out.println("=====");
        
        //2、遍历方法
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }

}


#bug 索引越界
在这里插入图片描述
在这里插入图片描述

4.5 如何存储基本数据类型

ArrayList只能存储引用数据类型,不可存储基本数据类型,但可其包装类,从JDK1.5开始,支持自动装箱(包装)、自动拆箱(原类型)。
8种基本类型包装类:除了int→Integer,char→Character2个特殊,其他都是首字母改成大写即可。
在这里插入图片描述

4.6 ArrayList练习

数值添加到集合

生成6个1~33之间的随机整数,添加到集合,并遍历
在这里插入图片描述
在这里插入图片描述

package demo02;

import java.util.ArrayList;
import java.util.Random;

//生成6个1~33之间的随机整数,添加到集合,并遍历
/*思路:
1、使用Random类生成6个整数
2、赋值给ArrayList类
3、遍历打印*/
public class Test01RandomArrayList {
    public static void main(String[] args) {
            Random r = new Random();
            ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            int num = r.nextInt(33)+1;
            list.add(num);
        }
        System.out.println(list);
    }
}

对象添加到集合

自定义4个学生对象,添加到集合,并遍历
#bug
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//定义类
package demo02;
//题目:定义一个数组,用来存储3个Student类
/*思路:
1、定义成员变量
2、定义无参有参构造方法
3、Setter、Getter方法
*/
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
//测试类
package demo02;

import java.util.ArrayList;

//自定义4个学生对象,添加到集合,并遍历
/*思路:
4个学生对象
1、创建Student类
3、new 4个对象

添加到集合
2、 创建ArrayList类,
add()

遍历
5、list.fori,get(i)
*/
public class Test02StudentArrayList {
    public static void main(String[] args) {
        //(1、创建Student类)2、 创建ArrayList类,add()
        ArrayList<Student> list = new ArrayList<>();
        //3 new 4个对象
        Student a = new Student("小王",24);
        Student b = new Student("小方",23);
        Student c = new Student("小李",20);
        Student d = new Student("小欣",27);
        //4 add()
        list.add(a) ;
        list.add(b) ;
        list.add(c) ;
        list.add(d) ;
        //5、list.fori,get(i)
        for (int i = 0; i < list.size(); i++) {
            Student who = list.get(i);
            System.out.println(who.getName()+who.getAge());
        }
    }
}

打印集合方法

定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素@元素@元素}。
在这里插入图片描述
在这里插入图片描述

package demo02;

import java.util.ArrayList;

//定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。
// 格式参照 {元素@元素@元素}。
/*思路:
1、创建ArrayList类
2、打印{
3、add
4、get(i)
5、打印@
6、循环判断<size 45, =size 4
7、打印}*/
public class Text03FormatArrayList {
    public static void main(String[] args) {
        //创建ArrayList类
        ArrayList<Integer> list = new ArrayList<>();
        //打印{
        System.out.print("{");
        //add(i)
        list.add(1);
        list.add(4);
        list.add(7);
        //循环判断<size 45, =size 4
        for (int i = 0; i < list.size(); i++) {
            if (i < list.size() - 1) {
                System.out.print(list.get(i) + "@");
            } else {
                System.out.println(list.get(i) + "}");
            }
        }

        System.out.println("=======");
        //调用方法
        printArrayList(list);
    }
    //定义方法 三要素 返回值 方法名 参数
    public static void printArrayList(ArrayList<Integer> list) {
            //{1@2@3}
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            if (i < list.size() - 1) {
                System.out.print(list.get(i) + "@");
            } else {
                System.out.print(list.get(i) + "}");
            }
        }
        }
}

获取集合方法

定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
#注意 学习思路
在这里插入图片描述

package demo02;

import java.util.ArrayList;
import java.util.Random;

/*获取偶数数组
思路:
1、需要创建一个大集合,存int数字,<Integer>
2、随机数字用Random nextInt()
3、循环30次把数字放进大集合:for add
4、定义一个方法筛选偶数
根据大集合筛选符合要求的元素的到小集合
三要素:
返回值类型:集合
方法名称:getEvenList
参数列表:ArrayList大集合
5、判断(if)是偶数:num%2==0
6、如果是偶数就放到小集合,否则不放
7、主方法给小集合赋值
8、遍历打印偶数对象
*/
public class Test04ReturnArrayList {
    public static void main(String[] args) {
        //创建大集合
        ArrayList<Integer> allList = new ArrayList<>();
        //创建0~100内的30个随机数放入大集合
        Random r = new Random();
        for (int i = 0; i < 30; i++) {
            //生成100以内的随机数
            int num = r.nextInt(100)+1;
            allList.add(num);
        }
        //调用方法创建偶数对象
        ArrayList<Integer> evenList = getEvenList(allList);
        //打印长度
        System.out.println("偶数个数为:"+evenList.size());
        //遍历打印数值
        for (int i = 0; i < evenList.size(); i++) {
            System.out.println(evenList.get(i));
        }
    }
    public static ArrayList<Integer> getEvenList(ArrayList<Integer> allList){
        //装偶数集合 判断大集合长度次拿偶数
        ArrayList<Integer> evenList = new ArrayList<>();
        for (int i = 0; i < allList.size(); i++) {
            int num = allList.get(i);
            if(num%2==0){
                evenList.add(num);
            }
        }
        return evenList;
    }
}

#bug 理解题意用Random 缺少返回语句 错误方法代码如下:

package demo02;

import java.util.ArrayList;

//定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
/*思路:
1、创建AL类
2、add
3、定义取偶方法
4、返回偶数*/
public class Test04ReturnArrayList {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(3);
        list.add(4);
        list.add(7);
        list.add(6);
        returnAL(list);
        System.out.println(list);
    }
    public static int returnAL(ArrayList<Integer> list){
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)/2==0){
                return list.get(i);
            }

        }

    }
}

发布了20 篇原创文章 · 获赞 1 · 访问量 478

猜你喜欢

转载自blog.csdn.net/MF507/article/details/104997474
今日推荐