Scanner类,Random类,ArryList集合的基本使用规则

一、Scanner类

注意:Scanner类是属于引用数据类型

引用数据类型的使用:

与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。

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

//Scanner sc = new Scanner();

每种引用数据类型都有其功能,我们可以调用该类型实例的功能。

变量名.方法名();

l  Scanner类

Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。

Scanner使用步骤:

导包:import java.util.Scanner;

创建对象实例:Scanner sc = new Scanner(System.in);

调用方法:

import java.util.Scanner;

public class ScannerDemo01 {

    public static void main(String[] args) {

        //创建Scanner引用类型的变量

        Scanner sc = new Scanner(System.in);

        //获取数字

        System.out.println("请输入一个数字");

        int n = sc.nextInt();

        System.out.println("n的值为" + n);

        //获取字符串

        System.out.println("请输入一个字符串");

        String str = sc.next();

        System.out.println("str的值为" + str);

    }
}

运行结果如下图所示。

 nextInt()、next()的理解

nextInt():只读取数值,剩下"\n"还没有读取,并将cursor放在本行中

next():只读空格之前的数据,并且cursor指向本行

next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。

二、random类

注意:

random() 方法返回随机生成的一个实数,它在[0,1)范围内。

语法:

import random

random.random()

 例题:

import random

//生成第一个随机数

print "random() : ", random.random()

// 生成第二个随机数

print "random() : ", random.random()

 运行后输出结果为:

random() :  0.281954791393
random() :  0.309090465205

 例题:猜数字小游戏

package test6;
 
import java.util.Random;
import java.util.Scanner;
 
public class TestRandom {
    public static void main(String[] args) {
        //使用Scanner和Random完成一个猜数字小游戏,猜1-100之间的数字
        Scanner scanner = new Scanner(System.in);
        //1.产生一个1-100之间的随机数
        Random random = new Random();
        //随机100个数字0-99,然后+1 就是1-100
        int num = random.nextInt(100)+1;
        //定义一个用户用来统计用户猜对用了几次
        int count = 0;
        //2.不断执行循环,让用户输入要猜的数组并进行大小提示
        do{
            System.out.println("请输入猜的数字");
            int input = scanner.nextInt();
 
            if(input>num){
                System.out.println("猜大了");
            }else if(input<num){
                System.out.println("猜小了");
            }else{
                System.out.println("恭喜你,猜对了");
                break;
            }
            count++;
        }while(true);
        //3.结束循环表示用户猜对并提示猜对次数
        System.out.println("你猜对了数字"+num+"用了"+count+"次");
    }
}

三、ArrayList集合

1. ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

2. ArrayList 继承了 AbstractList ,并实现了 List 接口。

3. ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化
  • E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型
  • objectName: 对象名。

4. ArrayList 是一个数组队列,提供了相关的添加、删除、修改等功能。

5. ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。

如果我们要存储其他类型,而 <E> 只能为引用数据类型,这时我们就需要使用到基本类型的包装类。

基本类型对应的包装类表如下:

基本类型引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

访问元素 :

访问 ArrayList 中的元素可以使用 get() 方法:

import java.util.ArrayList;
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
      sites.add("weipinhui");
        sites.add("pinduoduo");
        sites.add("Taobao");
        sites.add("jingdong");
        System.out.println(sites.get(1));  // 访问第二个元素
    }
}

注意数组的索引值从 0 开始。

执行输出结果为:

pinduoduo

添加元素:

ArrayList 类提供了很多有用的方法,添加元素到 ArrayList 可以使用 add() 方法:

import java.util.ArrayList;
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("weipinhui");
        sites.add("pinduoduo");
        sites.add("Taobao");
        sites.add("jingdong");
        System.out.println(sites);
    }
}

 执行输出结果为:

[weipinhui, pinduoduo, Taobao, jingdong]

 修改元素:

如果要修改 ArrayList 中的元素可以使用 set() 方法:

import java.util.ArrayList;
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("weipinhui");
        sites.add("pinduoduo");
        sites.add("Taobao");
        sites.add("jingdong");
        sites.set(2, "Weixin"); // 第一个参数为索引位置,第二个为要修改的值
        System.out.println(sites);
    }
}

 执行输出结果为:

[weipinhui, pinduoduo, Weixin, jingdong]

 删除元素:

如果要删除 ArrayList 中的元素可以使用 remove() 方法:

import java.util.ArrayList;
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("weipinhui");
        sites.add("pinduoduo");
        sites.add("Taobao");
        sites.add("jingdong");
        sites.remove(3); // 删除第四个元素
        System.out.println(sites);
    }
}

执行输出结果为:

[weipinhui, pinduoduo, Taobao]

 计算大小:

如果要计算 ArrayList 中的元素数量可以使用 size() 方法:

import java.util.ArrayList;
public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("weipinhui");
        sites.add("pinduoduo");
        sites.add("Taobao");
        sites.add("jingdong");
        System.out.println(sites.size());
    }
}

执行输出结果为:

4

例题: 随机点名不重复案例

public static class ArrayListTest{
        public static void main(String[] args){
            //可以使用Arrays的asList实现序列化一个集合
            List<String> list= Arrays.asList("玛卡巴卡","汤波哩波波","唔西迪西","依古比古","小点点");
            //把list作为参数重新构建一个新的ArrayList集合
            ArrayList<String> names=new ArrayList<>(list);
 
            //使用Scanner、Random、ArrquList完成一个不重复的点名程序
            Random random=new Random();
            Scanner scanner=new Scanner(System.in);
            while (true){
                //如果集合中没有元了,则结束循环
                if(names.size()==0){
                    System.out.println("已完成所有学生抽查,抽查结束请重新开始!");
                    break;
                }
                System.out.println("确认点名请输入Y/y");
                String input = scanner.next();
                if (input.equals("Y")|| input.equals("y")){
                    //随机一个集合的下标
                    int index = random.nextInt(names.size());
                    System.out.println("本次抽到: "+names.get(index));
                    //该学生已被抽到,把他从集合中移除
                    names.remove(index);
                }else {
                    System.out.println("本次抽查结束!");
                    break;
                }
            }
 
        }
    }

确认点名请输入Y/y
y
本次抽到: 依古比古
确认点名请输入Y/y
y
本次抽到: 小点点
确认点名请输入Y/y
n
本次抽查结束!
 
Process finished with exit code 0

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值