Java04_流程控制

流程控制

用户交互Scanner

Scanner对象

获取用户的输入

import java.util.Scanner;
//基本语法
Scanner s=new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前我们一般取药使用hasNext()、hasNextLine()判断是否还有输入的数据。

next()

  1. 一定要接收到有效字符后才可以结束输入。
  2. 对有效字符输入之前的空白 ,next()方法会自动去除
  3. 输入有效数字后将输入的空白作为分隔符或者结束符
  4. next()不能得到带有空格的字符串。
package scanner;
import java.util.Scanner;
public class Demo {

	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();
	}
}

nextLine()

  1. 以Enter为结束符,输入回车前的所有字符
  2. 可以获得空白
package scanner;

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.hasNextLine()) {
			String str=scanner.nextLine();
			System.out.println("输出的内容为" +str);
		}
		scanner.close();
	}
}

其他

  • hasNextInt
  • hasNextFloat
package scanner;

import java.util.Scanner;

public class Demo3 {

	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int i=0;
		float f=0.01f;
		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 scanner;
import java.util.Scanner;
public class text {

	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("和为 "+ sum);
		System.out.println("平均数为 "+ sum/m);
		scanner.close();
	}
}

顺序结构

从上至下

选择结构

if

if单选择结构

package struct;
import java.util.Scanner;
public class Demo {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入内容");
		String s=scanner.nextLine();
		if(s.equals("Hello")) {
            //equals判断是否相等
			System.out.println(s);
		}
		System.out.println("end");
		scanner.close();
	}
}

if双选择结构

if(布尔表达式){
    //布尔表达式为true将执行的语句
}
else{
    //布尔表达式为false将执行的语句
}

if多选择结构

if(布尔表达式1){
    //布尔表达式1为true将执行的语句
}
else if(布尔表达式2){
    //布尔表达式2为true将执行的语句
}
else if(布尔表达式3){
    //布尔表达式3为true将执行的语句
}
else{
    //布尔表达式都不为true将执行的语句
}

嵌套if

都可以嵌套

switch多选择结构

switch case 语句判断一个变量与一系列值中某个值是否相等,每一个值一个分支

switch(expression){
    case value1:
        break;
    case value2:
        break;
    default:
}
package struct;
import java.util.Scanner;
public class switchDemo {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入grade");
		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;
		default :		
			System.out.println("输入不正确");
			break;
		}
	}
}

记得加break;否则会穿透!

循环结构

while

只要布尔表达式的值为true就会一直循环执行下去

避免死循环!

package struct;
public class whileDemo {
	public static void main(String[] args) {
		int i=1;
		int sum=0;
		while(i<=100)
		{
			sum=sum+i;
			i++;
		}
		System.out.println("1-100的和为 "+sum);
	}
}

do-while

不满足不进入循环,但至少会执行一次。

public class doWhileDemo {
	public static void main(String[] args) {
		int i=1;
		int sum=0;
		do {
			sum=sum+i;
			i++;
		}
		while(i<=100);
		System.out.println("1-100的和为 "+sum);
	}
}

for

package struct;
public class forDemo {
	public static void main(String[] args) {
		int i=1;
		int sum=0;
		for(i=1;i<=100;i++) {
			sum=sum+i;
		}
		System.out.println("1-100的和为 "+sum);
	}
}

练习

练习1

计算0-100之间奇数和偶数的和

public class forText {
	public static void main(String[] args) {
		// 计算0-100之间奇数和偶数的和
		int i=0;
		int sum1=0;
		int sum2=0;
		for(i=0;i<=100;i++) {
			if(i%2==0) {
				sum1=sum1+i;
			}
			if(i%2==0) {
				sum2=sum2+i;
			}
		}
		System.out.println("0-100偶数和为:"+sum1);
		System.out.println("0-100奇数和为:"+sum2);
	}
}
练习2

输出1-1000之间能被5整除的数,并每行输出3个。

  • println 输出完会换行
  • print 输出完不会换行
public class forText2 {
	public static void main(String[] args) {
		// 输出1-1000之间能被5整除的数,并每行输出3个。
		for(int i=0;i<=1000;i++) {
			if(i%5==0) {
				System.out.print(i+"\t");
			}
			if(i%(5*3)==0) {
				System.out.print("\n");
			}
		}
	}
}
练习3 打印九九乘法表

思考

  1. 先打印第一列

  2. 把固定的1再用一个循环包起来

  3. 去掉重复,i<=j

  4. 调整样式,加制表符和换行(记得是print不是println)

    public class forText3 {
    	public static void main(String[] args) {
    		System.out.println("九九乘法表");
    		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();
    		}
    	}
    }
    

break&continue

break

用于强行退出一层循环,不执行剩余的语句

continue

用于终止某次循环->会执行下一次循环判断

练习

打印101-150之间的所有质数

outer 标签

public class lableDemo {
	public static void main(String[] args) {
		//打印101-150之间的所有质数
		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;
				}
			}
			System.out.println(i);
		}
	}
}

练习

打印菱形

public class Text {
	public static void main(String[] args) {
		//打印菱形
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入菱形的行数");
		int num=scanner.nextInt();
		int MaxLine=(num+1)/2;
		for(int i=1;i<=MaxLine;i++){
			for(int s=MaxLine-i;s>0;s--) {
				System.out.print("  ");
			}
			for(int j=1;j<=2*i-1;j++) {
				System.out.print("* ");
			}
			System.out.print("\n");
		}
		for(int i=MaxLine-1;i>=1;i--){
			for(int s=1;s<=MaxLine-i;s++) {
				System.out.print("  ");
			}
			for(int j=1;j<=2*i-1;j++) {
				System.out.print("* ");
			}
		System.out.print("\n");
		}
		scanner.close();
	}
}
posted @ 2025-06-17 14:45  小兔纸船  阅读(45)  评论(0)    收藏  举报