流程控制

流程控制

用户交互Scanner

  • java.util.Scanner是JDK 5的新特征,我们可以通过Scanner类来获取用户输入

    Scanner s = new Scanner(System.in);
    ​
    scanner.close();
  • 通过Scanner类的 next()与 nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext()与hasNextLine()判断是否还有输入的数据。

import java.util.Scanner;
public static void main(String[] args){
    //创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    //判断用户是否有输入字符串
    if(scanner.hasNext()){
        //使用Next方式接收
        String str = scanner.next();//程序会等待用户输入完毕
        System.out.println(str);
    }
    
    //凡是属于IO流的类如果不关闭会一直占用资源,用完就关闭。
    scanner.close();
}
  • next() :对输入有效字符之前遇到的空白,next()方法会自动将其去掉。

    只有输入有效字符后才会将其后面输入的空白作为分隔符或结束符。不能得到带有空格的字符串。

  • nextLine():以Enter为结束符,即nextLine()方法返回的是输入回车之前的所有字符,可以得到所有字符串。

import java.util.Scanner;
public public class Demo{
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);
	System.out.println(m+"个数的平均数是"+(sum/m));
    
	scanner.close();
}
}

顺序结构

顺序结构是任何一个算法都离不开的一个基本结构。

选择结构

  • 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 语句都将跳过执行

  • 嵌套if结构     

switch多选择结构

  • switch case 语句判断一个变量与一系列值是否相等,每个值称为一个分支。

  • switch 语句中的变量类型可以是

    1. int、byte、short、char

    2. 从java SE 7开始,支持字符串 String 类型了。

    3. 同时 case 标签必须为字符串常量或字面量。

public class SwitchDemo_01 {
public static void main(String[] args) {
    //case 穿透   加上break可终止穿透
    //switch 匹配一个具体的值
	char grade = 'C';
	
	switch(grade) {
	case 'A':
	System.out.println("优秀");
	break;
	case 'B':
	System.out.println("优秀2");
	break;
	case 'C':
	System.out.println("优秀3");
	break;
	case 'D':
	System.out.println("优秀4");
	break;
		}			
	}
}

 String 类型的switch 语句

public class SwitchDemo_02 {
	public static void main(String[] args) {
		//JDK7新特性   字符串
		String name = "laoyin";
		
		switch(name) {
		
		case "哈哈哈":
			System.out.println("哈哈哈");
			break;
		case "哈喽":
			System.out.println("哈喽");
			break;
		case "nishuosha":
			System.out.println("nishuosha");
			break;
			default:
				System.out.println("你弄啥");
        }
    }    
}

要学会反编译

循环结构

  • while循环

   语法:

while(布尔表达式){

   //循环的内容  

}

计算1到100的和

public class WhileDemo_01 {
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);
}
}
  • do...while 循环

      和while循环相似,不同的是,do while循环至少会执行一次

 do{

//代码语句

}while(布尔表达式);

     while是先判断后执行,do while 是先执行后判断。do while 总是保证循环被至少执行一次

public class DoWhileDemo_02 {
public static void main(String[] args) {
	
	int a =0;
	while(a<0) {
		System.out.println(a);
		a++;
	}                           //不输出
	
	do {System.out.println(a);
		a++;
	}while(a<0);                //输出0
	
}
}
  • for 循环
  • 语法

    for(初始化;布尔表达式;更新){

    //代码语句

    }

  • for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

    for循环的执行次数在循环前就确定了。

    关于for循环

  • 最先执行初始化步骤。可以声明一种类型,可初始化一个或多个循环控制变量,也可以是空语句。

  • 然后检测布尔表达式的值。若为true,循环体被执行;若为false,循环终止,开始执行循环体后面的语句。

  • 执行一次循环后,更新循环控制变量

  • 再次检测布尔表达式,循环执行上面的过程。

练习 1: 输出 0-100之间奇数和偶数的和

//0-100之间的奇数和偶数的和
public class ForDemo_02 {
public static void main(String[] args) {
	
	int oddSum = 0;
	int evenSum = 0;
	for (int i = 0; i <=100; i++) {
		if(i%2!=0) {    //奇数
			oddSum+=i;
		}
		if(i%2==0) {    //偶数
			evenSum+=i;
		}
	}
	System.out.println(oddSum);
	System.out.println(evenSum);
}
}

2:

//输出1-1000能被5整除的数   每行3个
public class ForDemo_01 {
public static void main(String[] args) {
	
	for (int i = 0; i <=1000; i++) {
		if(i%5==0) {
			System.out.print(i+"\t");
		
		}
		if(i%(3*5)==0) {
			System.out.println();
		}
	}
}
}

3,输出九九乘法表

//九九乘法表
public class ForDemo_03 {
public static void main(String[] args) {
	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("\n");
	}
}
}

增强for循环

  • 主要用于数组或集合的增强型for循环。

    语法

    for(声明语句:表达式){

    // 代码句子

    }

  • 声明语句:声明新的局部变量,该变量的类型必须和数组中元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等。

  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

  • //增强 for 循环
    public class ForDemo_04 {
    public static void main(String[] args) {
    	
    	int [] numbers = {10,20,30,40,50};//定义一个数组
    	//遍历数组中的元素
    	for(int x:numbers) {
    		System.out.println(x);
    	}
    }
    }

    break&continue

  • break:用在任何循环语句的主体部分。强行退出循环,不执行循环中剩余的语句。(break也可在 switch语句中使用)

public class BreakDemo_01 {
	public static void main(String[] args) {
		
		int i =0;
		while(i<100) {
			i++;
			System.out.println(i);
			if(i==20) {        //在i等于20的时候,终止全部循环,跳出循环
				break;
			}
		}
	}
}
  • continue:用在循环语句体中。跳过某一次的循环,接着进行下一次是否执行循环的判定。

public class ContinueDemo_01 {
	public static void main(String[] args) {
		int i =0;
		while(i<100) {
			i++;
			if(i%10==0) { //只在i为10的倍数的时候跳过循环
				continue;
			}
			
			System.out.print(i+"  ");
		}
		
	}
}

练习 &Debug

打印三角形

public class TextDemo01 {
	//三角形
	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();
		}		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值