Java流程控制
1 Scanner对象
Java可以通过使用Scanner类来获取用户的输入; 基本语法:
Scanner s=new Scanner(System.in);
通过Scanner类的next()于nextLine()方法获取输入的字符串,在读取前我们还要使用hasnext()与hasnextLine()判断是否还有输入的数据。 next()
- 一定要读取到有效字符之后才可以结束输入;
- 对输入的有效字符之前遇到 的空白,next()方法会自动将其去掉;
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
NextLine() 5. 以Enter为结束符也就是说nextLine方法返回的是输入回车键之前的所有字符. 6. 可以活得空白
两个小案例:
案例一 要求我们可以输入多个数字,求其总和和平均值,每输入一个数字用回车键确认,并通过输入非数字来结束输入,并输出结果。
package com.Hai.Scanner;
import java.util.Scanner;
public class Dem07 {
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();
sum=sum+x;
m=m+1;
System.out.println("你输入的是第"+m+"个数据,"+"当前的和为"+sum);
}
System.out.println("你一共输入了"+m+"个数据");
System.out.println("输入数据的总和为"+sum);
System.out.println("输入数据的平均值为"+sum/m);
scanner.close();
}
}
案例二 编写一个让电脑判断你输入的数据是整数还是小数的程序。
package com.Hai.Scanner;
import java.util.Scanner;
public class Dem06 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
boolean flag=true;
int i=0;
float f=0.0f;
System.out.println("=====这是一个猜你输入的数据是整数还是小数的小游戏=====");
while(flag){
System.out.println("请输入一个小数或是一个整数:");
if(scanner.hasNextInt()){
i=scanner.nextInt();
System.out.println("你输入的是一个整数");
System.out.println("输入的整数为"+i);
}else{
f=scanner.nextFloat();
System.out.println("你输入的是一个小数");
System.out.println("输入的小数为"+f);
}
}
scanner.close();
}
}
2 顺序结构
顺序结构就是代码从上往下执行的结构。
3 选择结构
3.1 if单选择结构
package com.Hai.struct;
import java.util.Scanner;
public class Dem01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数:");
String s=scanner.nextLine();
if(s.equals("hello")){
System.out.println(s);
}else{
System.out.println("End");
}
scanner.close();
}
}
3.2 if双选择结构
package com.Hai.struct;
import java.util.Scanner;
public class Dem02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩");
double d=scanner.nextDouble();
if(d<=60){
System.out.println("成绩不及格");
}else{
}
scanner.close();
}
}
3.3 if多选择结构
package com.Hai.struct;
import java.util.Scanner;
public class Dem03 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(true){
System.out.println("请输入数据");
double d=scanner.nextDouble();
if(d==100){
System.out.println("成绩满分");
}else if(d>=90){
System.out.println("成绩优秀");
}else if(d<90&&d>80){
System.out.println("成绩为A");
}else if (d>70&&d<80) {
System.out.println("成绩为B");
}else if (d>60&&d<70) {
System.out.println("成绩及格");
}else{
System.out.println("成绩不及格");
}
}
}
}
3.4 嵌套的if结构
嵌套就是if选择结构里面还有if结构。
3.5 switch多选择结构
注意 case 的穿透原则,case的表达式后要写break;如果不写就会执行以后的代码;直到遇到一个break才会停止。
switch在JDK7以后支持表达式的结果是字符串;因为字符串的本质是数字。 案例3.5-1
package com.Hai.struct;
import java.util.Scanner;
public class switchDem01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩");
while(true){
String grade=scanner.nextLine();
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 "f":
System.out.println("挂科");
default:
System.out.println("未知等级");
}
}
}
}
IDEA支持反编译,Java进行编译后是一个class文件,class文件时是一个二进制的字节码文件,需要进行编译后我们才看得懂。
例如,打开上面的案例3.5-1的class文件,对其进行编译,步骤如下:
把switchDem01.class文件复制到你打开的项目的目录中 编译后的结果对比如图
4 循环结构
4.1 while循环
案例4.1-1 输出0~100的数
package com.Hai.struct;
public class whileDem01 {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
System.out.println(i);
}
}
}
案例4.1-2 计算1-100的和。
package com.Hai.struct;
public class whileDen02 {
public static void main(String[] args) {
int i=0;
int sum=0;
while(i<=100){
sum=sum+i;
i++;
}
System.out.println("1-100的和为:"+sum);
}
}
4.2 do····while循环
对于while循环而言,如果不满足条件,就不执行循环,但是,有时候我们需要即使不满足循环仍然要执行一次。 案例4.2-1
package com.Hai.struct;
public class doWhileDem01 {
public static void main(String[] args) {
int i=0;
int sum=0;
do{
sum=sum+i;
i++;
}while(i<=100);
System.out.println("");
}
}
案例4.2-2 do…while和while的区别
package com.Hai.struct;
public class doWhileDem02 {
public static void main(String[] args) {
int a=0;
System.out.println(a);
while(a<0){
a++;
System.out.println(a);
}
System.out.println("================");
do{
a++;
System.out.println(a);
}while(a<0);
}
}
4.3 for循环
1.在IDE中的for循环的快速写法 100.for回车 会出现
for (int i = 0; i < 100; i++) {
}
- for死循环的写法
for (; ;) {
}
案例4.3-1 使用for输出1-10的数
package com.Hai.struct;
public class forDem01 {
public static void main(String[] args) {
for (int i = 0; i <=10; i++) {
System.out.println(i);
}
}
}
案例4.3-2 计算1-100以内的奇数的和和偶数的和
package com.Hai.struct;
public class forDem02 {
public static void main(String[] args) {
int oddsum=0;
int evensum=0;
for (int i = 0; i <=100; i++) {
if(i%2==0){
evensum=evensum+i;
}else{
oddsum=oddsum+i;
}
}
System.out.println(evensum);
System.out.println(oddsum);
}
}
案例4.3-3 用while或者for循环 输出0-1000内之间能被5整除的数,并且每一行输出3个. println表示输出会换行 print表示输出不会换行
package com.Hai.struct;
public class forDem03 {
public static void main(String[] args) {
for (int i = 0; i <=1000; i++) {
if(i%5==0){
System.out.print(i+" ");
}
if(i%(5*3)==0){
System.out.print("\n");
}
}
}
}
案例4.3-7 打印九九乘法表
package com.Hai.struct;
public class forDem04 {
public static void main(String[] args) {
for (int j = 1; j <=9; j++) {
for (int i = j; i <=9; i++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
for (int j = 1; j <=9; j++) {
for (int i = 1; i <=j; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
4.4 Java5中引用了一种主要应用于数组的增强型for循环
java5中的增强for循环是用来偷懒得; 案例4.4-1
package com.Hai.struct;
public class forDem06 {
public static void main(String[] args) {
int[] number={10,20,30,40,50};
for(int x:number){
System.out.println(x);
}
}
}
break continue的使用
break可以用于强行突出循环,不执行循环中剩余的语句; continue在循环体中,用于终止某次循环的过程,即跳过循环体中尚未执行的语句,接着下一次的循环;
案例continue
package com.Hai.struct;
public class continueDem01 {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
if(i%10==0){
System.out.println();
continue;
}
System.out.println(i);
}
}
}
案例break
package com.Hai.struct;
public class breakDem01 {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
if(i==15){
break;
}
System.out.println(i);
}
}
}
5 练习题训练
打印三角型
package com.Hai.struct;
public class PraticeDem01 {
public static void main(String[] args) {
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();
}
}
}
|