顺序控制(if)

  1. 单分支
if(条件表达式){
	    执行代码块;(可以有多条语句)
	}
  1. 双分支
if(条件表达式){
	     执行代码块1;(可以有多条语句)
	 } else {
	     执行代码块2;(可以有多条语句)
	
	 }
  1. 分支控制if-else
if(条件表达式1){
	     执行代码块1;(可以有多条语句)
	 } else if(条件表达式2){
	     执行代码块2;(可以有多条语句)
	 } 
	 ....
	 else{
	     执行代码块n;(可以有多条语句)
	 }
  1. 嵌套分支
if(){
	     if(){
	        //if-else...
	     }else{
	         //if-else
	     }
	 }

switch分支结构

switch(表达式){
         case 常量1:
                 语句块1;
                 break;
         case 常量2:
                 语句块2;
                 break;
         ...
         case 常量n:
                 语句块n;
                 break;
         default:
                 default语句块;
                 break;
 }
  1. 解读
    (1)switch关键字,表示switch分支;
    (2)表达式对应于一个值,变量,比如num;
    (3)break:表示退出switch,若没有break,则一直执行后面的语句块;
    (6)如果一个都没有匹配上,就执行default语句块。
  2. 注意事项及细节
    (1)表达式数据类型,应和 case 后的常量类型一致,或者是可以自动转为可以相互比较的类型,比如输入的是字符,而变量是 int 。
    (2)switch(表达式)中表达式的返回值必须是:(byte、short、int、char、enum[枚举]、String)。
    (3)case子句中的值必须是常量,而不能是变量。
    (4)default子句是可选的,当没有匹配的case时,执行default。
    (5)break语句是用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break。

for循环

for(循环变量初始化;循环条件;循环变量迭代){
	                循环操作(可以多条语句);
	}

while循环

循环变量初始化;
	while(循环条件){
	        循环体(语句);
	        循环变量迭代;
	
	}

do while循环

循环变量初始化;
	do{
	    循环体(语句);
	    循环变量迭代;
	}while(循环条件);

注意最后有一个分号

空心金字塔

  • 我写的
class Star {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入层数:");
        int totalLevel = scanner.nextInt();

        int i = 1,j;
        while(i <= totalLevel){
            j = 1;
            while(j <= totalLevel+i-1){
                if( j == totalLevel-(i-1) || j == totalLevel+(i-1) || i == totalLevel){
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
                j++;
            }
            System.out.print("\n");
            i++;
        }
    }
}
  • 老师写的
import java.util.Scanner;
public class PracticeLoop03{
	public static void main(String[] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("请输入行数:");
		int num = myscanner.nextInt();
		for (int i = 1;i <= num;i++) {
			for (int k = 1; k <= num - i;k++) {
				System.out.print(" ");
			}
			for (int j =1;j <= 2 * i - 1;j++) {
				if (j == 1 || j == 2 * i -1 || i == num) {
					System.out.print("*");
				}else{
					System.out.print(" ");
				}	
			}
			System.out.println("");
		}
	}
}

break和continue和return(跳转控制)

  • break语句用于终止某个语句块的执行,一般使用在switch或者循环[for,while,do-while]中。
  • continue语句用于结束本次循环,据徐执行下一次循环;
  • return使用在方法,表示跳出所在的方法

随机数

1、输出[0.0 , 1.0)之间的随机数

Math.random()

2、输出[1,100]之间的随机数

(int)(Math.random() * 100 ) + 1

3、判断字符串内容是否相等

String name = "贾宝玉";
	System.out.println(name.equals("林黛玉"));
	System.out.println("林黛玉".equals(name));
	//两种写法都可,更推荐第二种,避免空指针。
结果输出false。

第四章作业

水仙花数

  • 输入
Scanner scanner = new Scanner(System.in);
        System.out.println("请输入需要判断的整数:");
        int num = scanner.nextInt();
  • 我写的
int i,j,sum=0;
        int temp = num;
        for(i=1;i<=3;i++){
            j = temp % 10;
            sum += j*j*j;
            temp = temp/10;
        }
        if(sum == num){
            System.out.println("是水仙花数");
        } else {
            System.out.println("不是水仙花数");
        }
  • 老师写的
int n1 = num/100;  //百位
        int n2 = num%100/10; //十位
        int n3 = num% 10; //个位
        if(n1*n1*n1 + n2*n2*n2 + n3*n3*n3 == num){
            System.out.println("是水仙花数");
        } else {
            System.out.println("不是水仙花数");
        }

第六题

【题目】输出1-100之间不能被5整除的数,每5个一行

思路:使用count来统计输出的个数。

count % 5 == 0 则说明现在个数是五的整数倍,可以换行

int i ,count=0 ;
    for(i = 1 ; i <= 100; i++){
        if(i % 5 != 0){
            System.out.print(i + " ");
            count++;

            /* 我写的
             if(count==5){
                 System.out.println("");
                 count=0;
             } 
            */

            //老师写的
            if(count % 5 == 0){
                System.out.println("");
            }
        }
    }

第七题

【题目】输出小写的a-z和大写的Z-A

思路:‘b’ = ‘a’ + 1,递增可以用for控制

for(char c1 = 'a' ; c1 <= 'z' ; c1++){
        System.out.print(c1 + " ");
    }
    System.out.println("");
    for(char c2 = 'Z' ; c2 >= 'A'; c2--){
        System.out.print(c2 + " ");
    }

第八题

【题目】求1-1/2+1/3-1/4+…+1/100

注意:

  • 涉及到除法取余的一般要用double变量,而不是int
  • 1/2 != 0.5, 在编程语言中等于0!!!所以一定要把分子或分母其中一个写成double形式。

思路:判断奇偶

  • 偶数:i % 2 == 0(不是除法不是除法不是除法,4/2 == 2)
  • 奇数:i % 2 != 0
int i;
    double sum = 0;
    for(i=1;i<=100;i++){
        if(i % 2 == 0){
            sum -= 1.0/i; //不能写成1/i
        } else {
            sum += 1.0/i;
        }
    }
    System.out.println(sum);

第九题

【题目】求1+(1+2)+(1+2+3)+…+(1+2+3+…+100)

int sum=0,i;
    for(i=1;i<=100;i++){
        sum += i * (101-i);
    }
    System.out.println(sum);