用户交互Scanner
-
java.util.Scanner 是 java5 的新特征,通过Scanner类来获取用户的输入。
-
基本语法: Scanner s = new Scanner(System.in);
-
Scanner类中获取输入的字符串方法有 : next( ) 、 nextLine( ) 。
next( ) : 以空白作为结束符,不可以得到带有空格的字符串。
nextLine( ) : 以Enter作为结束符,可以读取空白格。
-
Scanner类中判断是否还有输入数据的方法有: hasNext( ) 、 hasNextLine( ) 、hasNextInt()、hasNextFloat()等。
package com.Hrstudy.scanner; import java.util.Scanner; public class demo09 { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); //判断用户有没有输入字符串 if(scanner.hasNext()){ //使用next的方式接收 String str = scanner.next(); System.out.println("输入的内容为:"+str); } //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉 scanner.close(); } }
-
注意: 养成好习惯,创建完主函数,就写上关闭scanner资源的语句:
scanner.close( );
-
案例
package com.Hrstudy.scanner; import java.util.Scanner; public class demo04 { public static void main(String[] args) { //任务需求: 我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果; Scanner scanner = new Scanner(System.in); //和 double sum = 0 ; //计算输入了多少个数字 int m = 0; System.out.println("请输入数字:"); //通过循环判断是否还有输入,并在里面对每一次进行求和和统计 while(scanner.hasNextDouble()){ double x = scanner.nextDouble(); m++; sum += x; System.out.println("你已经输入了"+m+"个数据,现在的总和为:"+sum); } System.out.println(m+"个数的和为:"+sum); System.out.println(m+"个数的平均数为:"+(sum/m)); scanner.close(); } }
顺序结构
- 定义:就是JAVA中的基本结构,按照顺序一句一句执行
- 结构:
选择结构
if单选择结构
-
语法格式:
if(布尔表达式){
//如果布尔表达式为true执行的语句
}
-
图示
if双选择结构
-
语法格式
if(布尔表达式){
//如果布尔表达式的值为true执行
}else{
//如果布尔表达式的值为false执行
}
-
图示
嵌套的if结构
-
语法结构
if(布尔表达式 1){
//如果布尔表达式 1 值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2 值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3 值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
-
图示
-
注意:
-
if 语句至多有一个 else 语句,else 语句在所有的 else if 语句之后。
-
if 语句可以有若干个else if 语句,它们必须在 else 语句之前。
-
只要其中一个 else if 语句检测为true后,其它的 else if 以及 else 语句都将跳过执行。
-
switch多选择结构
-
语法结构
switch(变量){
case value1 :
//语句
break;//可选
case value2 :
//语句
break;
//你可以有任意数量的case
default : //可选
//语句
}
-
注意
- switch语句中的变量类型可以是byte、short、int、char、String。
- case 标签必须为字符串常量或字面量。
循环结构
while 循环
-
格式:
while (布尔表达式){
//循环体
}
do … while 循环
-
格式:
do {
//循环体
} while (布尔表达式);
-
while 和 do…while的区别
- while 先判断后执行,do…while 是先执行后判断
- do…while 总是保证循环体至少执行一次
for 循环
-
格式:
for (初始化;布尔表达式;更新){
//循环体
}
-
for循环注意点.
(1) for循环的次数是在执行前就确定的。
(2) 可以初始化一个或者多个循环控制变量,也可以是空语句。 -
案例
package com.Hrstudy.struct; public class fordemo01 { public static void main(String[] args) { //用for循环输出1-1000之间被5整除的书,并且每行输出3个 for(int i = 0 ; i <= 1000 ; i++) { if(i%5==0){ System.out.println(i+"\t"); } if(i%(5*3)==0){ System.out.println("\n"); } //println : 输出完换行 // print : 输出完不换行 } } }
增强for循环
-
格式
for( 数据类型 变量名 : 遍历的目标) {
//数据类型 变量名 : 声明一个变量用来接收遍历目标遍历后的元素
}
break&continue
-
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(在switch语句中也有应用)
-
continue语句用在循环语句体中,用于终止某次循环过程,即跳出循环体中未执行的语句,接着进行下一次是否执行循环的判定
-
代码演示
package com.Hrstudy.struct; public class breakDemo01 { public static void main(String[] args) { //break 在任何循环语句的主体部分,均可用break控制循环的流程 //break 用于强行退出循环,不执行循环中剩余的语句 //continue 语句在用于循环语句体重,用于终止某次循环过程,即跳过循环体中未执行的语句,接着进行下一次是否执行循环的判定 int i = 0; while (i<100){ i++; if(i%10 == 0){ System.out.println(); continue; } System.out.print(i); } } }
-
goto关键字(没必要掌握,知道即可)
代码演示:
package com.Hrstudy.struct;
public class gotoDemo01 {
public static void main(String[] args) {
//打印101-150之间所有的质数
//质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
outer:for(int i=101;i<=150;i++){ //outer 就是一个标记
for(int j = 2;j<i/2;j++ ){
if(i % j == 0){
continue outer; //说明该数字不是质数,结束本次循环,跳至outer
}
}
System.out.println(i + " ");
}
}
}
拓展
打印三角形
package com.Hrstudy.struct;
public class TestDemo {
public static void main(String[] args) {
//打印三角形 5行
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();
}
}
}
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();
}
}