以前咱们学的基本语法中咱们并无实现程序和人的交互,可是Java给咱们提供了这样一个工具类,咱们能够获取用户的输入。java.util.Scanner是java5的新特性,咱们能够经过Scanner类来获取用户的输入java
调用Scanner类时ctrl点击Scanner能够进入他的类文件查看其它方法算法
基本语法:express
Scanner s = new Scanner(System.in);
next()编程
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo001 { public static void main(String[] args) { //建立一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in);//接收用户输入并封装成Scanner对象 System.out.println("请输入相关内容:"); //判断用户有没有输入字符串 if(scanner.hasNext()){ //使用next方法接收 String str = scanner.next(); System.out.println("输入的内容为:"+str); } scanner.close();//凡是属于IO流的类若是不关闭会一直占用资源,要养成好习惯用完就关掉 } }
输出结果:数组
nextLine()服务器
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo002 { public static void main(String[] args) { //从键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println("请输入相关内容:"); //判断是否还有输入 if(scanner.hasNextLine()){ //使用nextLine方法接收 String str = scanner.nextLine(); System.out.println("输入的内容为:"+str); } scanner.close(); } }
输出结果:工具
不加if语句也能够实现输入输出,前面if语句是为了判断用户是否输入字符串性能
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo003 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入相关内容:"); String str = scanner.nextLine(); System.out.println("输入的内容为:"+str); scanner.close(); } }
结果和刚才是同样的:测试
输入整型和浮点型设计
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo004 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //从键盘接收数据 int i = 0; float f = 0.0f; System.out.println("请输入整数:"); if(scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据:"+i); }else{ System.out.println("输入的不是整数数据!"); } System.out.println("请输入小数:"); if(scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据:"+f); }else{ System.out.println("输入的不是小数数据!"); } scanner.close(); } }
结果:
package com.shenxiaoyu.scanner; import java.util.Scanner; public class Demo005 { 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 sum=sum+x; System.out.println("你输入了第"+m+"个数据,而后当前结果sum="+sum); } System.out.println(m+"个数的和为:"+sum); System.out.println(m+"个数的平均值为:"+(sum/m)); scanner.close(); } }
结果为:
咱们不少时候须要判断一个东西是否可行,而后咱们才去执行,这样一个过程在程序中用if语句来表示
语法:
if(布尔表达式){ //若是布尔表达式为true将执行括号{}里的语句,不然将不执行 }
运用scanner练习if单选择结构:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo01 { 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(); } }
结果:
那如今有个需求,成功了,我要A,失败了,我要B,这样的需求用一个if就搞不定了,咱们须要有两个判断,须要一个双选择结构,因此有了if-else结构
语法:
if(布尔表达式){ //若是布尔表达式为true }else{ //若是布尔表达式为false }
运用scanner练习if-else双选择结构:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo02 { public static void main(String[] args) { //考试分数大于60就是及格,小于60分就是不及格 Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); if(score>60){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close(); } }
结果:
在生活中咱们不少时候的选择不只仅只有两个,因此咱们须要一个多选择结构来处理这个问题
语法:
if(布尔表达式 1){ //若是布尔表达式 1的值为true执行代码 }else if(布尔表达式 2){ //若是布尔表达式 2的值为true执行代码 }else if(布尔表达式 3){ //若是布尔表达式 3的值为true执行代码 }.... else { //若是以上布尔表达式都不为true执行代码 }
运用scanner练习if多选择结构:
package com.shenxiaoyu.struct; import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); if(score==100){ System.out.println("恭喜满分"); }else if(score<100 && score>=90){ System.out.println("A级"); }else if(score<90 && score>=80){ System.out.println("B级"); }else if(score<80 && score>=70){ System.out.println("C级"); }else if(score<70 && score>=60){ System.out.println("D级"); }else if(score<60 && score>=0){ System.out.println("不及格"); }else { System.out.println("成绩不合法"); } scanner.close(); } }
结果:
使用嵌套的if-else语句是合法的,也就是说你能够在另外一个if或者else if语句中使用if或者else if语句。你能够像if语句同样嵌套else if....else
语法:
if(布尔表达式 1){ //若是布尔表达式 1的值为true执行代码 if(布尔表达式 2){ //若是布尔表达式 2的值为true执行代码 } }
运用scanner练习嵌套的if结构:
package com.shenxiaoyu.struct; import java.util.Scanner; //查找输入0-100数的范围 public class IfDemo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入0-100的数字:"); int num = scanner.nextInt(); if(num<=100 && num>50){ System.out.println("你输入的数大于50"); if(num<=100 && num>75){ System.out.println("你输入的数大于75"); }else if (num==75){ System.out.println("你输入的数等于75"); }else{ System.out.println("你输入的数小于75"); } }else if(num==50){ System.out.println("你输入的数等于50"); }else if(num<50&& num>=0){ System.out.println("你输入的数小于50"); if(num<50 && num>25){ System.out.println("你输入的数大于25"); }else if (num==25){ System.out.println("你输入的数等于25"); }else{ System.out.println("你输入的数小于25"); } }else { System.out.println("你输入的数不合法"); } scanner.close(); } }
结果:
语法:
switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //你能够有任意数量的case语句 default://可选 //语句 }
switch多选择结构语句char练习:
package com.shenxiaoyu.struct; public class SwitchDemo01 { public static void main(String[] args) { //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("未知等级"); } } }
结果:
switch多选择结构语句String练习:
package com.shenxiaoyu.struct; public class SwitchDemo02 { public static void main(String[] args) { String name = "油炸蘑菇鱼"; switch(name){ case "沈小榆": System.out.println("沈小榆是小可爱"); break; case "油炸蘑菇鱼": System.out.println("快来关注油炸蘑菇鱼"); break; default: System.out.println("弄啥嘞!"); } } }
结果:
while(布尔表达式){ //循环内容 }
public class WhileDemo01 { public static void main(String[] args) { //输出1~100的和 int i =0; int sum = 0; while(i<=100){ sum=sum+i; i++; } System.out.println(sum);//5050 } }
语法:
do{ //代码语句 }while(布尔表达式);
public class DoWhileDemo { public static void main(String[] args) { int i=0; int sum =0; do{ sum=sum+i; i++; }while (i<=100); System.out.println(sum);//5050 } }
public class DoWhileDemo01 { public static void main(String[] args) { int a = 0; while(a<0){ System.out.println(a); a++; } System.out.println("=============================="); do{ System.out.println(a); a++; }while(a<0); } }
从结果就能看出while和do-while的区别:
语法:
for(初始化;布尔表达式;更新){ //代码语句 }
快捷键:100.for+enter
while和for循环对比:
public class ForDemo01 { public static void main(String[] args) { int a = 1;//初始化条件 while(a<=100){//条件判断 System.out.println(a);//循环体 a+=2;//迭代 } System.out.println("while循环结束!"); //初始化 条件判断 迭代 for(int i=1;i<=100;i++){ System.out.println(i); } System.out.println("for循环结束!"); } }
public static void main(String[] args) { //练习:计算0到100之间的奇数和偶数和 int oddSum = 0; int evenSum = 0; for (int i = 0; i <=100; i++) { if(i%2!=0){ oddSum+=i; }else{ evenSum+=i; } } System.out.println("奇数和为:"+oddSum);//奇数和为:2500 System.out.println("偶数和为:"+evenSum);//偶数和为:2550 }
public class ForDemo03 { public static void main(String[] args) { //练习:用while或for循环输出1~1000之间能被5整除的数,而且每行输出3个 for (int i = 0; i <=1000; i++) { if (i%5==0){ System.out.print(i+"\t"); } //每行输出3个 if(i%(5*3)==0){ System.out.println();//System.out.print("\n"); } } //println 输出完会换行 //print 输出完不会换行 } }
public class ForDemo04 { public static void main(String[] args) { for (int i = 1; i <=9; i++) { //j<=i用来排除重复项 for (int j =1; j <=i; j++) { System.out.print(i+"*"+j+"="+(i*j)+"\t"); } System.out.println(); /* 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 */ } } }
java加强for循环语法格式以下:
for(声明语句:表达式){ //代码句子 }
public class ForDemo05 { public static void main(String[] args) { int[] numbers = {10,20,30,40,50,60};//定义了一个数组 //遍历数组的元素 for(int x:numbers){ System.out.println(x); } System.out.println("======================="); for (int i = 0; i < 5; i++) { System.out.println(numbers[i]); } } }
和for对比结果相同:
在任何循环语句的主体部分,都可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
用于强行跳出循环语句但后续语句仍是会被执行
public class BreakDemo { public static void main(String[] args) { int i =0; while(i<100){ i++; System.out.println(i); if (i==30){ break; } } System.out.println("123我是测试"); } }
结果:
在循环语句中,用于终止某次循环过程,即跳过循环体中还没有执行的语句,接着进行下一次是否执行循环的断定
用于结束当前循环,但仍是会继续其余循环
public class ContinueDemo { public static void main(String[] args) { int i = 0; while(i<100){ i++; if(i%10==0){ System.out.println(); continue; } System.out.print(i); } } }
结果:
public class LabelDemo { public static void main(String[] args) { //打印101~150之间全部的质数 //质数就是指大于1的天然数中,除了1和它自己之外再也不有其余因数的天然数 int count =0 ; outer:for(int i=101;i<150;i++){ for(int j=2;j<i/2;j++){ if(i%j==0){ continue outer;//i%j==0则跳回到for循环标签标记处 } } System.out.print(i+" ");//101 103 107 109 113 127 131 137 139 149 } } }
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(); /* * *** ***** ******* ********* */ } } }