Java自学
Scanner类,Random类,ArrayList类
Scanner类
概念
一个可以解析基本类型和字符串的简单文本扫描器。
引用类型使用步
- 导包
import 包名.类名;
import java.util.Scanner;
- 创建对象
数据类型 变量名 = new 数据类型(参数列表);
Scanner sc=new Scanner(System.in);
- 输入数据
system.out.println("输入数据");
- 调用方法
变量名.方法名();
int i=sc.nextInt(); // 接收一个键盘录入的整数
scanner使用步骤
-
查看类
java.util.Scanner :该类需要import导入后使用。 -
查看构造方法
public Scanner(InputStream source) : 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。 -
查看成员方法
public int nextInt() :将输入信息的下一个标记扫描为一个 int 值。
public class Demo02{
import java.util.Scanner;//第一步
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);//第二步
System.out.println("1");
int i=sc.nextInt(); //第三步
System.out.println(i);
}
}
- 匿名对象(了解)
//new 类名(参数列表);
new Scanner(System.in);
或者 new Scanner(System.in).nextInt();
一个匿名对象,只能使用一次。
作为参数
public static void main(String[] args) {
//普通方式
Scanner sc =new Scanner(System.in);
input(sc);
//匿名对象作为接收方法的参数
input(new Scanner( System.in));
}
public static void input(Scanner sc) {
System.out.println(sc);
}
作为返回值
class Test2 {
public static void main(String[] args) {
// 普通方式
Scanner sc = getScanner();
}
public static Scanner getScanner(){
//普通方式
//Scanner sc = new Scanner(System.in);
//return sc;
//匿名对象作为方法返回值
return new Scanner(System.in);
}
}
写到这胳膊疼,读英语去了匿名对象此处存疑
练习
- 求和
public class Demo02{
import java.util.Scanner;//第一步
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入第一个数据");
int a=sc.nextInt();
System.out.println("输入第二个数据");
int b=sc.nextInt();
int sum=a+b;
System.out.println(sum);
}
}
结果:输入第一个数据
1
输入第二个数据
1
2
- 取最值
(三个数)
public class Demo02{
import java.util.Scanner;//第一步
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入第一个数据");
int a=sc.nextInt();
System.out.println("输入第二个数据");
int b=sc.nextInt();
System.out.println("输入第三个数据");
int c=sc.nextInt();
int t=(a>b?a:b);
int m=(t>c?t:c);
System.out.println(m);
}
}
输出结果:输入第一个数据
1
输入第二个数据
2
输入第三个数据
3
3
Random类
此类的实例用于生成伪随机数。
random使用步骤
- 查看类
java.util.Random :该类需要 import导入使后使用。
import java.util.Random;
- 查看构造方法
public Random() :创建一个新的随机数生成器。
Random r = new Random();
- 查看成员方法
public int nextInt(int n) :返回一个伪随机数,范围在 0 (包括)和指定值 n (不包括)之间的int 值。
int i=r.nextInt();
例:输出三个一百以内的整数
import java.util.Random;
public class Demo02 {
public static void main(String[] args) {
Random r = new Random();
for(int i=0;i<3;i++) {
int number=r.nextInt(100);
System.out.println(number);
}
}
}
输出结果:96
21
78
练习
- 获取随机数
- 获取1-n之间 的随机数
import java.util.Scanner;
import java.util.Random;
public class Demo02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入n的值");
int n=sc.nextInt();
Random r= new Random();
for(int i=0;i<n;i++) {
int number =r.nextInt(n)+1;
System.out.println(number);
}
}
}
输出结果:输入n的值
3
2
1
1
- 猜数字小游戏
- // 游戏开始时,会随机生成一个1-100之间的整数number 。玩家猜测一个数字guessNumber ,会与number 作比
// 较,系统提示大了或者小了,直到玩家猜中,游戏结束。
public static void main(String[] args) {
Random r=new Random();
int number=r.nextInt(100)+1;
for(int i=0;i<1;i++) {
Scanner sc=new Scanner(System.in);
System.out.println("猜测一个数:");
int guessName=sc.nextInt();
if(number>guessName) {
System.out.println("小了");
}
else if(number<guessName) {
System.out.println("大了");
}else
System.out.println("相等");
}
while(true){ }break;
也可以,代码问题在于只能输入一次
比如输出结果:
猜测一个数:
20
小了
再次猜测就不行了,此处需要改进
ArrayList类
- 为适应数据变化的需求,Java提供了另一个容器java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。
- java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储
的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
ArrayList使用步骤
- 查看类
java.util.ArrayList <E>
:该类需要 import导入使后使用。
<E>
,表示一种指定的数据类型,叫做泛型。E ,取自Element(元素)的首字母。在出现E 的地方,我们使
用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
import java.util.ArrayList;
ArrayList<String>;
ArrayList<Student>;
- 查看构造方法
public ArrayList() :构造一个内容为空的集合。
ArrayList<String> list=new ArrayList<String> ();
//JDK7以后可以如下这样写
ArrayList<String> list=new ArrayList<> ();
- 查看成员方法
public boolean add(E e)
: 将指定的元素添加到此集合的尾部。
参数E e
,在构造ArrayList对象时, 指定了什么数据类型,那么add(E e) 方法中,只能添加什么数据
类型的对象。
import java.util.ArrayList;
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
String a="张三";
String b="李四";
String c="王五";
System.out.println(list);
list.add(a);
list.add(b);
list.add(c);
System.out.println(list);
}
常用方法和遍历
- public boolean add(E e) :将指定的元素添加到此集合的尾部。
- public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
- public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
- public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
import java.util.ArrayList;
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
// public boolean add(E e) :将指定的元素添加到此集合的尾部。
list.add("张三");
list.add("李四");
list.add("王五");
System.out.println(list);
// public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
// public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
System.out.println(list.size());
// public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
System.out.println(list.remove(0));
//遍历输出
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
}
输出结果:
[张三, 李四, 王五]
张三
李四
王五
3
张三
李四
王五
如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写。
基本类型 | 基本类型包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
只有Integer 和Character 需要特殊记忆,其他首字母大写即可。
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<>();
list.add(0);
list.add(1);
list.add(2);
System.out.println(list);
ArrayList<Character> list1=new ArrayList<>();
list1.add('e');
list1.add('f');
list1.add('g');
System.out.println(list1);
}
练习
- 数值添加到集合
// 1-10以内输出三个整数
public static void main(String[] args) {
Random r=new Random();
ArrayList<Integer> list=new ArrayList<>();
//添加随机数到集合
for(int i=0;i<3;i++) {
int number=r.nextInt(10)+1;
list.add(number);
}
//遍历集合输出
for(int m=0;m<list.size();m++) {
System.out.println(list.get(m));
}
}
输出结果:9
8
5
- 对象添加到集合
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<>();
Student s1=new Student("张三",1);
Student s2=new Student("李四",2);
Student s3=new Student("王五",3);
//添加到集合中
list.add(s1);
list.add(s2);
list.add(s3);
//遍历输出
for(int i=0;i<list.size();i++) {
Student s=list.get(i);
System.out.println(s.getName()+s.getAge());
}
没有结果,怎么改Student类都不行,存疑
- 打印集合方法
public static void main(String[] args) {
// 创建集合对象
ArrayList<String> list = new ArrayList<String>();
// 添加字符串到集合中
list.add("张三丰");
list.add("宋远桥");
list.add("张无忌");
list.add("殷梨亭");
// 调用方法
printArrayList(list);
}
public static void printArrayList(ArrayList<String> list) {
// 遍历集合
for (int i = 0; i < list.size(); i++) {
// 获取元素
String s = list.get(i);
System.out.println(s);
}
}
这四人名字
- 获取集合方法
定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
public static void main(String[] args) {
// 创建Random 对象
Random random = new Random();
// 创建ArrayList 对象
ArrayList<Integer> list = new ArrayList<>();
// 添加随机数到集合
for (int i = 0; i < 20; i++) {
int r = random.nextInt(1000) + 1;
list.add(r);
}
// 调用偶数集合的方法
ArrayList<Integer> arrayList = getArrayList(list);
System.out.println(arrayList);
}
public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) {
// 创建小集合,来保存偶数
ArrayList<Integer> smallList = new ArrayList<>();
// 遍历list
for (int i = 0; i < list.size(); i++) {
// 获取元素
Integer num = list.get(i);
// 判断为偶数,添加到小集合中
if (num % 2 == 0){
smallList.add(num);
}
}
// 返回小集合
return smallList;
}
笔者累了,学英语,偶数这一段存疑