java流程控制

Java流程控制


Scanner对象

基本语法

import java.util.Scanner;	//调用包

Scanner scanner = new Scanner(System.in);	//输入字符串
String str = null;
if(scanner.hasNext()){
    System.out.println("用next输入:");
    str = scanner.next();
    System.out.println("输出的内容为:"+str);
}
if(scanner.hasNextLine()){
    System.out.println("用nextLine输入:");
	str = scanner.nexetLine();
    System.out.println("输出的内容为:"+str);
}
scanner.close();
  • next()
    • 读到有效字符后才能结束输入
    • 输入到有效字符后,之后输入的将空白符号作为分隔符,遇见结束符停止输入
    • 无法获得空格符号
  • nextLine()
    • enter作为结束符
    • 与next()不同,可以接受空白符号
Scanner scanner = new Scanner(System.in);
double sum = 0;
int m = 0;
while(scanner.hasNextDouble()){
    double x = scanner.nextDouble();
    m ++ ;
    sum = sum + x;
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值是" + (sum / m));

输入double类型数据,直到不是double类型数据为止

顺序结构

  • 顺序结构是最基本的结构

选择结构

  • if单选择结构
if(boolean){
    ......
}
  • if双选择结构
if(boolean){
    ......
}else{
    ......
}
  • if多选择结构
if(boolean){
    ......
}else if{
    ......
}else if{
    ......
}
......
  • if嵌套结构
if(boolean){
    if(boolean){
        ......
    }
    ......
}
  • switch选择结构
int mark = 0;
char grade = 'C';
Scanner scanner = new Scanner(System.in);
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("未知等级"); break;
}

可以接受byte,short,int,char类型

switch从SE 7开始支持String 类型

case标签必须为字符串常量阔这字面量

case执行的语句需要接break,不然会有穿透现象

可以使用default执行其他情况


反编译

编译:java文件>>class字节码文件

反编译:class字节码文件>>java文件

将带有switch的java文件生成的class文件反编译,会有switch(object.hasCode())

说明switch是根据哈希码来判断

每个对象都有一个哈希码


循环

while

int i = 0 ;
while(i<10) {
    System.out.println(i);
    i ++; //如果这条就是无线循环
}

while(flag)

falg如果为true则继续循环,如果为false则跳出

// 1+2+3+...+100
int i = 1 ;
int sum = 0 ;
while(i<=100) {
    sum += i;
    i ++;
}
System.out.println(sum);

do...while

do {
    ...
}while(boolean);
  • 特性
    • 先判断,后执行
    • boolean为真继续循环,否则终止
// 1+2+3+...+100
int i = 0;
int sum = 0;
do {
    i++;
    sum += i;
}while(i<100);
System.out.println(sum);

for

syntax

for(初始化;布尔表达式;更新){
    ......	//代码块
}

先执行初始化

初始化只执行一次

后判断布尔表达式

执行代码块

执行更新

再次判断布尔表达式

初始化>>布尔表达式>>代码块>>更新>>布尔表达式>>...>>布尔表达式为假>>结束循环

for与if结合使用

//求100以内奇数odd与偶数even的和
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 = " + oddSum);
System.out.println("evenSum = " + evenSum);

双重循环

//打印乘法口诀表
for (int a=1 ; a<10 ; a++) {
    for (int b = 1 ; b <= a ; b ++ ) {
        System.out.print(a);
        System.out.print("*");
        System.out.print(b);
        System.out.print("=");
        System.out.print(a*b);
        System.out.print("\t"); //用制表符调整间距
    }
    System.out.println();   //实现换行
}

增强型for

syntax

for(声明语句 : 表达式) {
    ...... //代码块
}

Example

int[] numbers = {10,20,30,40,50}; //定义个数组
for( int i = 0; i<numbers.length ; i++){    //常规输出
    System.out.println(numbers[i]);
}
for( int x:numbers) {	//增强型for输出
    System.out.println(x);
}

number.length可以获取数组的长度

这里相当于i<5

break

在循环体中,跳出该循环

一般与if搭配使用

continue

在循环体中,跳过continue后面的语句

一般与if搭配

goto

int count = 0;
outer:for (int i=101; i<150; i++) {
    for (int j=2 ; j<=Math.sqrt(i) ; j++) {
        if (i%j == 0) {
            continue outer;
        }

    }
    System.out.print(i);
    System.out.print("\t");
}

打印三角形

例一

//print triangle
int lines = 8;
for (int line = 1;line <= lines ; line ++) {
    for ( int whitespaces = 0 ; whitespaces < lines-line ; whitespaces ++) {
        System.out.print(" ");
    }
    for (int several = 1; several <= 2 * line - 1; several ++) {

        System.out.print("*");
    }
    System.out.println();
}
posted @ 2021-01-01 21:52  BlockWolfs  阅读(59)  评论(0)    收藏  举报