JAVA语言基础——续(语句)

1.循环语句

(1)for循环(确定循环)
在这里插入图片描述

//如果在for语句内部定义一个变量,那么这个变量就不能在循环体之外使用
public class TestFor {
    public static void out(){//打印1~10
        for(int i = 1;i <= 10;i ++)
            System.out.println(i);
    }
    public static void main(String[] args){
        out();
    }
}

(2)for each循环:增强的for循环,可以用来依次处理数组(其他类型的元素集合)中的每个元素,不必为指定下标值分心。
(3)while:先判断再执行。
(4)do while:至少执行一次。

2.if语句

if条件语句包含多种形式:单分支、双分支和多分支。
if语句的程序流程图:
在这里插入图片描述
if语句双分支的程序流程图:
在这里插入图片描述
if语句多分支的程序流程图:
在这里插入图片描述

import java.util.Scanner;

public class loopYear {
    public static boolean fun(int year){
        if((year % 4 == 0 && year % 100 != 0)||year % 400 == 0){//判断是否为闰年
                return true;
            }
            return false;
    }

    public static void main(String[] args){
        //int year;
        System.out.println("输入年份:");
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
//        String s = scanner.nextLine();
//        year = Integer.parseInt(s);//将数字字符转换为等效的整数
        System.out.println(loopYear.fun(year));


    }
}

3.switch语句

对于分支较多的多重分支,使用嵌套的if语句层次太多,结构比较复杂,程序可读性较差,此时可使用switch语句。
switch语句的程序流程图:
在这里插入图片描述
switch语句是一个控制语句,它通过将控制传输给其体内的case语句来处理多个选择和枚举。
switch语句基于控制表达式的值选择要执行的语句分支。按以下顺序执行
(1)控制表达式求值。
(2)如果case标签后的常量表达式的值恰好等于控制表达式的值,控制将转到匹配的case标签后的语句序列。
(3)如果case标签后的常量表达式都不等于控制表达式的值,且存在一个default标签,则控制将转到default标签后的语句序列。
(4)如果case标签后的常量表达式都不等于控制表达式的值,且不存在default标签,则控制将跳出switch语句,执行后面的程序。
switch语句控制表达式允许的数据类型
(1)整数类型(byte、short、int);
(2)字符类型(char);
(3)枚举类型。
注:每一个case标签后的常量表达式的值都不能相同


public class Grade{
    public static void test1(){
        //case语句中少写了break;,编译不会出错,但是会一直执行之后所有case条件下的语句,并不进行判断,直到default语句。
        char ch = 'A';
        switch (ch){
            case 'B':
                System.out.println("case1");
            case 'A':
                System.out.println("case2");
            case 'C':
                System.out.println("case3");
            default:
                System.out.println("false");
                //输出为case2 case3 false
        }
    }

    public static void test2(){
        //default不是必需的也可以不写
        char ch = 'A';
        switch (ch){
            case 'B':
                System.out.println("1");
                break;
            case 'A':
                System.out.println("2");
                break;
            case 'C':
                System.out.println("3");
                break;
        }
        //输出2

    }

    public static void test3(){
        char ch = 'A';
        switch (ch){
            case 'B':
                System.out.println("1");
            case 'A':
                System.out.println("2");
            case 'C':
                System.out.println("3");
        }
        //break和default都没有,无报错
        //输出2 3
    }
    
    public static void main(String[] args){
        test1();
        test2();
        test3();




    }
}

4.输入

要通过控制台进行输出,首先要构造一个Scanner对象,并与“标准输入流”System.in关联。

import java.util.Scanner;

public class Next {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);//用给定的输入流创建一个对象
        int s = scanner.nextInt();//读取输入的字符串,空格结束
        System.out.println(s);

        String str = scanner.next();//读取输入的单词,以空格作为分隔符
        System.out.println(str);

        //读取输入的浮点数,空格结束
        float f = scanner.nextFloat();
        System.out.println(f);

        double d = scanner.nextDouble();
        System.out.println(d);

        String str1 = scanner.nextLine();//读取输入的整行内容
        System.out.println(str1);



    }
}

练习

1.斐波那契数列

## 前40项求和
//斐波那契数列前40项求和
//当n=1时,F=1
//当n=2时,F=1
//当n>2时,F=F(n-1)+F(n-2)

public class Fibonacc {
    public static int fibonacc(int n){
        if (n == 1 || n == 2){//f1,f2的值为1
            return 1;
        } else{
            return fibonacc(n - 1) + fibonacc(n - 2);//f(n>2)=F(n-1)+f(n-2)
        }
    }
    public static void main(String[] args) {
        int i,sum = 0;
        for(i = 1;i <= 40;i ++){
//            System.out.println(fibonacc(i));
            sum = sum + fibonacc(i);//求和
        }
        System.out.println(sum);
    }
}

2.随机数

## for循环产生20个(10~20)随机数
//for循环产生20个(10~20)随机数
import java.util.Random;

public class RandomNumber {
    public static void random(){
        int i;
        double sum = 10;
        Random r = new Random();//创建一个产生随机数的对象
        for(i = 0;i < 20;i ++){//20次循环
            double a = r.nextDouble();
            sum = sum + a;
            System.out.println(sum);
        }

    }

    public static void main(String[] args){
        random();
    }
}

3.输入一个数字,求它是几位数,并且顺序输出,再逆序输出

//输入一个数字,求它是几位数,并且顺序输出,再逆序输出
import java.util.Scanner;

public class Number {
    //判断是几位数
    public static int numberDigit(int num){
        int count = 0;//计数
        if (num == 0) {//
            count = count + 1;
        }else{
            while(Math.abs(num) % 10 > 0 || num /10 != 0) {
                count++;//
                num = num / 10;//每除一次10,count加一
            }
        }
        return count;
    }

    public static void main(String[] args){
        //输入
        System.out.println("请输入一个数字:");
        Scanner scanner = new Scanner(System.in);
        int n1 = scanner.nextInt();
        System.out.println(numberDigit(n1) + "位数:");//输出几位数
        System.out.println("正序输出:" + n1);//正序
        //逆序
//        int a,b,c,n2;
//        a = n1 / 100;
//        b = (n1 % 100) / 10;
//        c = n1 % 10;
//        n2 = c * 100 + b * 10 + a;
//        System.out.println("逆序输出:" + n2);
    }
}
//问题:逆序输出

4.求一个二进制数有几个1

//求一个二进制数有几个1
import java.util.Scanner;

public class NumerB {
    public static void main(String[] args) {
        //输入
        Scanner scanner = new Scanner(System.in);
        int b = scanner.nextInt();
        int count = 0,count2 = 1,flag = 1;
        //正数
        if (b > 0) {
            while (flag <= b) {
                if((b & flag) != 0)
                    count ++;
                flag = flag << 1;//用1和b的最低位相与,flag左移一位,依次到最高位
            }
            System.out.println(count);
        }
        //负数
        else if(b < 0){
            b = b << 1;//负数符号位都是1,count2初值给1,b左移一位,计算数值部分1的个数
            while (flag <= b){
                if((b & flag) != 0)
                    count2 ++;
                flag = flag << 1;
            }
            System.out.println(count2);
        }
        //0
        else{
            System.out.println(count);
        }
    }
}
//问题:count2错误

猜你喜欢

转载自blog.csdn.net/weixin_42479293/article/details/83041069