用户交互Scanner
我们可以用Scanner类来获取用户的输入
通过Scanner类的Next()与nextLine()方法获取输入的字符串,在读取前我们可以用hasNext()与hasNextLine()判断是否还有输入的数据
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
//从键盘接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入内容:");
if (sc.hasNext()){
//用next接收
String str = sc.next();
System.out.println("你的内容为:"+str);
}
//凡是Io流的类,如果不关闭会一直占用资源,养成好习惯
sc.close();
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
//从键盘接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入内容:");
if (sc.hasNextLine()){
//用nextLine接收
String str = sc.nextLine();
System.out.println("你的内容为:"+str);
}
sc.close();
nextInt() 与 nextFloat()
int x=0;
float f=0.0f;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
x=scanner.nextInt();
System.out.println("你输入的整数是"+x);
}else {
System.out.println("你输入的不是整数");
}
System.out.println("请输入小数");
if (scanner.hasNextFloat()){
f=scanner.nextFloat();
System.out.println("你输入的小数是"+f);
}else {
System.out.println("你输入的不是小数");
}
scanner.close();
Scanner小案例
输入多个数字,并求其总和,每输入一个数字用回车确认,通过输入的非数字来结束输入并输出执行
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double sum = 0;
int m = 0;
while (sc.hasNextDouble()){
double x = sc.nextDouble();
m=m+1;
sum = sum+x;
System.out.println("你输入了低"+m+"个数据,他当前的结果是"+sum);
}
System.out.println("你输入的和为"+sum);
System.out.println("你输入的平均值为"+sum/m);
}
if选择结构
if单选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
if双选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}else{
//如果布尔表达式为else将执行的语句
}
if多选择结构
if(布尔表达式1){
//如果布尔表达式为true将执行的语句
}else if(布尔表达式2){
//如果布尔表达式(布尔表达式2)为true将执行的语句
}else if(布尔表达式3){
//如果布尔表达式(布尔表达式3)为true将执行的语句
}else{
//如果布尔表达式为else将执行的语句
}
嵌套的if结构
if(布尔表达式1){
//如果布尔表达式1为true将执行的语句
if(布尔表达式2){
//如果布尔表达式2为true将执行的语句
}
}
switch多选择结构
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
//JDK7的新特性 表达式可以用字符串 字符的本质还是数字
// case穿透 switch 可以匹配一个具体的值
switch (name) {
case "张三":
System.out.println("张三");
break;//可选
case "李四":
System.out.println("李四");
break;//可选
case "王五":
System.out.println("王五");
break;//可选
case "赵六":
System.out.println("赵六");
break;//可选
default:
System.out.println("你输入的名字不在列表内");
}
循环结构
while 循环
while(布尔表达式){
//循环内容
}
只要布尔值为true,循环就会一直循环下去
我们大多数情况是会让循环停下来的,我们需要一个表达式失效的方式来结束循环
循环条件为true就会造成无限循环【死循环】,会影响程序性能或造成程序卡死崩溃!我们正常业务中应该尽量避免死循环
//死循环
while (true){
//等待客户连接
// 定时检查
//.....
}
思考:计算1+2+3+…+100=?
int i = 0;
int sum = 0;
while (i<=100){
sum = sum+i;
i++;
}
System.out.println(sum);//5050
do…while 循环
do{
//循环内容
//代码语句
}while(布尔表达式)
while 和do…while区别
- while是先判断后执行,do…while是先执行后判断
- do…while总是保证循环体会被至少执行一次!
for 循环
for 循环最有效,最灵活的循环结构
for(初始化;布尔表达式;更新){
//代码语句
}
for (int i = 0; i < 100; i++) {
//代码语句
}
练习 :
- 计算0到100之间的奇数和偶数的和
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <=100; i++) {
if (i%2==0){//偶数
evenSum+=i;
}else//奇数
oddSum+=i;
}
System.out.println("偶数的和:"+evenSum);
System.out.println("奇数的和:"+oddSum);
- 用while或者for循环输出1-1000之间能被5整除的数,而且每行输出3个
for (int i = 0; i <=1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%15==0){
System.out.println();
}
}
- 打印九九乘法表
for (int i=0;i<10;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println();
}
遍历数组元素
int[] number = {10,20,30,40,50};//定义数组
//遍历数组元素1
for (int x:number){
System.out.println(x);
}
int[] number = {10,20,30,40,50};//定义数组
//遍历数组元素2
for (int i=0;i<number.length;i++){
System.out.println(number[i]);
}
练习 :打印三角形
//打印三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >=i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j <i; j++) {
System.out.print("*");
}
System.out.println();
}
*
***
*****
*******
*********