Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类
键盘录入:
用nextLine()替代nextInt()、next()、nextDouble()等
为什么?
public static void main(String[] args) {
/*键盘录入
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数:");
int i=sc.nextInt();
System.out.println(i);
*/
//弊端:
//当我们用next,nextInt,nextDouble在接受数据类型的时候,遇到空格,回车,制表符的时候就停止了
//键盘录入的是123 123 那么只能接受到空格前面的数据
//我想要的是接收一整行数据
//约定:
//以后我们如果想要键盘录入,不管遇到什么类型,统一使用nextLine
//特点:遇到回车才停止
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
//String str=sc.next();
//System.out.println(str);
String line=sc.nextLine();
System.out.println(line);
int i=Integer.parseInt(line); //在把字符串转换成int类型
System.out.println(i);
}
练习:
键盘录入1~100之间的整数,并添加到集合中,直到集合中的数和超过200为止
package API.packeging.test;
import java.util.ArrayList;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
/*
键盘录入1-100之间的整数,并添加到集合中
直到集合种所有数据和能超过200为止
*/
//1.创建一个集合用来添加整数
ArrayList<Integer> list=new ArrayList<>();
//2.键盘录入数据添加到集合中
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("请输入一个整数:");
String numStr=sc.nextLine();
int num=Integer.parseInt(numStr);
//先把异常数据先进行过滤
if(num<1||num>100){
System.out.println("当前数字不在1~100当中,请重新输入");
continue;
}
//添加到集合中
//num:基本数据类型
//集合里面的数据类型是Integer
//添加数据的时候触发了自动装箱
//list.add(Integer.valueOf(num));
list.add(num);
//统计集合中的数据和
int sum=getSum(list);
//对sum进行判断
if(sum>200){
System.out.println("集合中的所有数据已经满足了要求");
break;
}
//验证结论
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+" ");
}
}
}
private static int getSum(ArrayList<Integer> list) {
int sum=0;
for(int i=0;i<list.size();i++){
//自动拆箱
//int num=list.get(i.valueOf());
int num=list.get(i);
sum+=num;
}
return sum;
}
}