Scanner对象
next()----判断语句if
next()不能得到带有空格的字符串,以空格为结束符
import java.util.Scanner; public class Demo1 { 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);} //关闭扫描器 scanner.close(); } }
输出
使用next方法接收:
Hello world 输出的内容为:Hello
nextLine()
nextLine()以Enter为结束符,也就是说,nextLine()方法返回的是输入回车之前的所有字符
import java.util.Scanner; public class Demo2 { public static void main(String[] args) { //创建一个扫描器对象,用于键盘接收数据 Scanner scanner=new Scanner(System.in); System.out.println("使用nextLine方式接收:"); //判断是否有字符串输入 if (scanner.hasNext()){ //从标准输入(通常是键盘)读取用户输入的一整行文本,并将其存储到一个名为 str的字符串变量中 String str = scanner.nextLine(); System.out.println("输出的内容:"+str); } scanner.close(); }
输出
使用nextLine方式接收: Hello world 输出的内容:Hello world
补充
特性 | ++m (前置自增) | m++ (后置自增) |
---|---|---|
操作顺序 | 先让 m 的值加1,然后使用新值进行后续运算 | 先使用 m 的原始值进行后续运算,然后再让 m 的值加1 |
表达式返回值 | 返回 自增之后 的新值 | 返回 自增之前 的原始值 |
共同效果 | 执行完成后,变量 m 的值都增加了1 | 执行完成后,变量 m 的值都增加了1 |
循环语句while()
import java.util.Scanner; public class Demo4 { public static void main(String[] args) { //我们可以输入多个文字,并求其总和与平均数,每输入一个数字用回车来确认,通过输入非数字来结束输入并输出执行结果; Scanner scanner=new Scanner(System.in); //和 double sum=0; int m=0; while (scanner.hasNextDouble()){ double x=scanner.nextDouble(); m=m+1;//m++ sum=sum+x; System.out.println("你输入了第"+m+"个数据,当前和为sum="+sum); } //输出和,平均值 System.out.println("个数的和为:"+sum); System.out.println("个数的平均值为:"+sum/m); //释放该 Scanner对象所占用的系统资源,特别是其关联的输入流(如键盘输入、文件等) scanner.close(); } }
输出
10 你输入了第1个数据,当前和为sum=10.0 20 你输入了第2个数据,当前和为sum=30.0 55 你输入了第3个数据,当前和为sum=85.0 31 你输入了第4个数据,当前和为sum=116.0 a 个数的和为:116.0 个数的平均值为:29.0
顺序结构
它是任何一种算法都不能缺少的结构
package Day02; public class ShunxuDemo { public static void main(String[] args) { System.out.println("你好1"); System.out.println("你好2"); System.out.println("你好3"); System.out.println("你好4"); System.out.println("你好5"); } }
选择结构
if单选择结构
语法
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
package Day02; import java.util.Scanner; public class IfDemo1 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入内容:"); String s = scanner.nextLine(); //equals:判断字符串是否相等 if (s.equals("Hello")){ System.out.println(s); } System.out.println("End"); scanner.close(); } }
if双选择结构
语法
if(布尔表达式){
//如果布尔表达式为true
}else{
//如果布尔表达式为true
}
package Day02; import java.util.Scanner; public class IfDemo2 { public static void main(String[] args) { //考试分数大于60为及格,小于60为不及格 Scanner scanner=new Scanner(System.in); System.out.println("请输出成绩:"); int grade = scanner.nextInt(); if (grade>=60){ System.out.println("成绩及格"); }else{ System.out.println("成绩不及格"); } scanner.close(); } }
if多选择结构
语法
if(布尔表达式1){
//如果布尔表达式1为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
package Day02; import java.util.Scanner; public class IfDemo3 { //考试分数大于60为及格,小于60为不及格 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输出成绩:"); int grade = scanner.nextInt(); /* if语句至多有1个else语句,else语句在所有的else If语句之后 If语句可以有若干个elseIf语句,它们必须在else语句之前 一旦其中一个elseIf语句为true,其他的else If以及else语句都将跳过执行。 */ if(grade==100){ System.out.println("恭喜满分"); }else if(grade<100&&grade>=90){ System.out.println("A级"); }else if(grade<90&&grade>=80){ System.out.println("B级"); }else if(grade<80&&grade>=70){ System.out.println("C级"); }else if(grade<70&&grade>=60){ System.out.println("D级"); }else if(grade<60&&grade>=0){ System.out.println("不及格10"); } else{ System.out.println("成绩不合法"); } } }
嵌套的If结构
语法
if(布尔表达式1){
//如果布尔表达式1为true执行代码
if(布尔表达式2){
//如果布尔表达式2为true执行代码
} }
switch多选择结构
package Day02; import com.sun.xml.internal.ws.addressing.WsaActionUtil; public class SwitchDemo1 { public static void main(String[] args) { //case穿透 //Switch匹配一个具体的值 char grade='C'; switch (grade){ case 'A': System.out.println("优秀"); break;//可选 case 'B': System.out.println("良好"); break;//可选 case 'C': System.out.println("及格"); break;//可选 case 'D': System.out.println("再接再厉"); break;//可选 case 'E': System.out.println("挂科"); break;//可选 default: System.out.println("未知等级"); } } }
循环结构
while循环
对于while语句而言,如果不满足条件,则不能进入循环
package Day02; public class WhileDemo1 { public static void main(String[] args) { //计算1+2+3+。。。+100 int sum=0; int i=0; while (i<=100){ sum=sum+i; i++; } System.out.println("总和为:"+sum); } }
do...while循环
语法
do{
//代码语句
}while(布尔表达式)
package Day02; public class DowhileDemo1 { public static void main(String[] args) { //计算1+2+3+。。。+100 int sum=0; int i=0; do{ sum=sum+i; i++; }while (i<=100); System.out.println("总和为"+sum); } }
While 和do...while的区别
-
while先判断后执行,dowhile是先执行后判断
-
Do...while总是保证循环体会被至少执行一次!
For循环
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
最先执行和初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,但也可以是空语句
-
检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后面的语句
-
执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
-
再次检测布尔表达式,循环执行上面过程
语法
for(初始化;布尔表达式;更新){
//代码语句}
例题1,计算0到100之间的奇数和偶数之间的和
package Day02; public class ForDemo2 { public static void main(String[] args) { //计算0到100之间的奇数和偶数之间的和 int sum1=0;//用于计算奇数和 int sum2=0;//用于计算偶数和 for (int i=0;i<100;i++){ if (i%2!=0){//为奇数 sum1+=i; }else{//为偶数 sum2+=i; } } System.out.println("奇数和:"+sum1); System.out.println("偶数和:"+sum2); } }
练习2 ,用while或For循环输出1-1000之间能被5整除的数,并且每行输出3个
package Day02; public class ForDemo3 { public static void main(String[] args) { // 用while或For循环输出1-1000之间能被5整除的数,并且每行输出3个 for (int i=1;i<=1000;i++){ if (i%5==0){ System.out.print(i+"\t");//\t为转义字符,在输出文本时,将光标移动到下一个“制表位”,产生类似按Tab键的空格效果,主要用于文本对齐 } //当 i 是15的倍数(即余数为0)时,表示已经输出了3个元素, // 此时执行 System.out.println()进行换行。 if (i%(5*3)==0){//每行 System.out.println(); //System.out.print("\n"); } } //println 输出完会换行 //print 输出玩不会换行 System.out.println("用while循环:");//if嵌套语句 int a=1; while (a<=1000){ if (a%5==0){ System.out.print(a+"\t"); if (a%(5*3)==0){//每行 System.out.println(); } }a++; } }}
练习3,九九乘法表
package Day02; /* 1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 1×4=4 2×4=8 3×4=12 4×4=16 1×5=5 2×5=10 3×5=15 4×5=20 5×5=25 1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81 */ public class ForDemo4 { public static void main(String[] args) { //1.先打印第一列 //2.固定的1再用一个循环包起来 //3.去掉重复项i<=j //4.调整样式 for (int j=1;j<=9;j++){ for (int i=1;i<=j;i++) { System.out.print(j+"*"+i+"="+(j*i)+"\t"); } System.out.println(); } } }
增强for循环
package Day02; public class ForDemo5 { public static void main(String[] args) { int[] numbers={10,20,30,40,50};//定义一个数组; for (int i=0;i<5;i++) { System.out.println(numbers[i]); } System.out.println("========="); //遍历数组的元素 for (int x:numbers){ System.out.println(x); } } }
break和continue
-
break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
-
continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。