zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java的学习笔记(03)控制流程

2023-03-07 09:11:01 时间

Java流程控制01 用户交互Scanner java.util.Scanner 可以通过Scanner类来活区用户的输入。

Scanner s = new Scanner(System in) Sannner类的next()和nextLine()方法获取用户输入字符串。在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入数据

package scanner;

import java.util.Scanner;

public class Demo01 {

public static void main(String[] args) {
    //创建一个扫描器对象,用于接受数据键盘数据
    Scanner scanner = new Scanner(System.in);
    System.out.println("使用next方法接收:");

    //判断用户有没有输入字符
    if (scanner.hasNext()){
        String str = scanner.next();
        System.out.println("输出的内容为:"+str);
    }

    //凡是属于IO流的类如果不关闭,会一直占用资源,要养成好习惯,用完就关掉
    scanner.close();
}

} package scanner;

import java.util.Scanner;

public class Demo02 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("使用nextLine方法接收:");
    if (scanner.hasNext()){
        String str = scanner.nextLine();
        System.out.println("输出的内容为:"+str);
    }

    scanner.close();

}

} 注意 使用next()方法输入字符时,以空格键结束,敲击回车键运行下一行代码。如输入"Hello world",最终结果为“Hello”;

使用nextLine()方法输入字符时,保留空格键,敲击回车键结束输入并运行接下来的代码。如输入"Hello world",最终结果为“Hello world”;

Java流程控制02 Scanner进阶使用 nextInt()、nextDouble()、nextFloat()等等输入对应数据类型

hasNextInt()、hasNextDouble()、hasNextFloat()

package scanner;

import java.util.Scanner;

public class Demo04 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    //从键盘接收数据
    int i = 0;
    float f = 0.1f;

    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 Demo05 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    double sum = 0;

    int m = 0;
    System.out.println("请输入:");
    while(scanner.hasNextDouble()){
        System.out.println("请输入:");
        double x = scanner.nextDouble();
        m = m+1;
        sum = sum + x;
    }
    System.out.println(m+"个数的总和为"+sum);
    System.out.println(m+"个数的平均值"+(sum/m));

    scanner.close();

}

} Java流程控制03 顺序结构 按照编写代码的顺序先后运行

package struct;

public class FullDemo {

public static void main(String[] args) {
    System.out.println("1");
    System.out.println("2");
    System.out.println("3");
    System.out.println("4");
    System.out.println("5");
    System.out.println("6");
}

} Java流程控制04 if选择结构 单选择结构

if(布尔表达式){

} 双选择结构

if(布尔表达式){

真的结果

}else{

假的结果

} 多选择结构

if(布尔表达式1){

1的结果

}else if(布尔表达式2){

2的结果

}else if(布尔表达式3){

3的结果

}else{

以上条件都不满足的结果

} 嵌套if结构

if(布尔表达式){

if(布尔表达式){
}

} Java流程控制05 Switch结构 switch(expression){

case value:
    //语句
    break;  //可选
case value:
    //语句
    break;  //可选
default:   //可选
    //语句

} package struct;

public class Switch01 {

public static void main(String[] args) {
    char grade = 'C';
    switch (grade){
        case 'A':
            System.out.println("优秀");
            break;                            //退出
        case 'B':
            System.out.println("良好");
            break;
        case 'C':
            System.out.println("及格");        //没有break,会继续执行下一句程序
        default:
            System.out.println("未知");         //   A B C以外的情况
    }
}

} SWITCH支持String的判断(可以是字符串)

Java流程控制06 While循环详解 先判断再执行。

while(布尔){

} package struct;

public class While01 {

public static void main(String[] args) {
    //输出0-100
    int i = 0;
    while (i<100){
        ++i;
        System.out.println(i);
    }
}

} package struct;

public class While02 {

public static void main(String[] args) {
    while (true){
        //死循环
    }
}

} package struct;

public class While03 {

public static void main(String[] args) {
    int sum = 0;
    int i = 0;
    while (i<=100){
        sum = sum + i ;
        i++;
    }
    System.out.println(sum);
}

} Java流程控制07 Do...While循环详解 先执行,再判断。满足条件退出循环

do{

//代码

}while(布尔表达); package struct;

public class DoWhile01 {

public static void main(String[] args) {
    int i = 0;
    int sum = 0;
     do{
         sum = sum + i;
         i++;
     }while (i<=100);
    System.out.println(sum);
}

} Java流程控制08 For循环详解 for循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构

for(初始化 ; 布尔判断 ; 更新){

//代码语句

} package struct;

public class For01 {

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+=2){                //快捷键   100.for
        System.out.println(i);
    }

    System.out.println("for循环结束");
}

} package struct;

public class For02 {

public static void main(String[] args) {
        //练习1 计算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);
    System.out.println("偶数和为"+ evenSum);

}

} package struct;

public class For05 {

public static void main(String[] args) {
    //练习2 用while或for 循环输出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.println();
        }
    }

    //   print()输出不换行,println()输出换行

}

} Java流程控制09 打印九九乘法表 package struct;

public class For006 {

public static void main(String[] args) {
    //打印九九乘法表
    for (int j = 0; j <= 9; j++) {
        for (int i = 1; i <= j; i++) {
            System.out.print(j + "*" + i + "=" + (j * i)+"\t");
        }
        System.out.println();
    }
}

} Java流程控制10 增强for循环 for(声明语句:表达式){

} package struct;

public class ForPro {

public static void main(String[] args) {
    int[] numbers = {10,20,30,40,50};       //定义一个数组

    for (int x:numbers){
        System.out.println(x);      //循环数组的每一个元素,并赋值给X,输出X的值
    }

    System.out.println("=========================");
    //类似于:
    for (int i = 0; i<5; i++){
        System.out.println(numbers[i]);
    }

}

} Java流程控制11 break、continue、goto break 执行到break,直接跳出循环

package struct;

public class Demo007 {

public static void main(String[] args) {
    int i = 0;
    while (i<100){
        i++;
        System.out.println(i);
        if (i==10){
            break;
        }
    }
    System.out.println("123");
}

} contine 执行到contine,只停止当前循环的语句。会继续循环下去,直到满足循环条件

package struct;

public class Demo008 {

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);
    }
    System.out.println("123");
}

} goto goto有害,不建议使用

Java流程控制12 打印三角形及Debug package struct;

public class TestDemo01 {

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

}

}