一、For循环

两个小例子:

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        //练习:打印输出0-100之间的奇数和偶数的和
        int oddSum = 0;//奇数和
        int evenSum = 0;//偶数和
        for (int i = 0;i <= 100;i++){
            if(i % 2 == 0){
                evenSum += i;
            }else {
                oddSum += i;
            }
        }
        System.out.println("奇数和:" + oddSum);//结果为2500
        System.out.println("偶数和:" + evenSum);//结果为2550
    }
}
package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        //练习用while或者for循环输出1-1000之间能被5整除的数字,每行输出三个
        for (int i = 0;i <= 1000;i++){
            if(i % 5 == 0){
                System.out.println(i + "\t");
            }
            if(i % (5*3) == 0){
                System.out.print("\n");
                System.out.println();
            }
        }
    }
}

知识点:

print:输出完会换行

println:输出完不会换行

打印九九乘法表

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        for(int i = 1;i <= 9;i++){
            for(int j = 1;j <= i;j++){
                System.out.print(j + "*" +i+ "=" +(j*i) + "\t");//print打印完换行
            }
            System.out.println();
        }
    }
}

增强For循环:

package com.liyan;

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

        //遍历数组的元素(简化写法)
        for(int x:numbers){
            System.out.println(x);
        }

        //相当于下面的这种写法:
        for(int i = 0;i < 5;i++){
            System.out.println(numbers[i]);
        }
    }
}

break语句、continue语句

break用于强行退出循环,不执行循环中剩下的语句,continue用于种终止某次循环过程,跳出循环体中尚未执行的语句,接着进行下一次是否循环

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100){
            i++;
            if(i % 10 == 0){
                System.out.println();
                continue;
            }
            System.out.println(i);//除了能被10整除的都进行输出了
        }
    }
}

打印三角形和Debug

package com.liyan;

public class Demo07 {
    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();
        }
    }
}

关于Debug:

  • 先点击代码行左边的空白地区,出现一个小红点

Java程序 输出奇偶数的程序 java输出一到一百的偶数_开发语言

  • 再点击这个小爬虫

Java程序 输出奇偶数的程序 java输出一到一百的偶数_System_02

  • 最后出现这个页面,图示为下一步,来进行分析

Java程序 输出奇偶数的程序 java输出一到一百的偶数_java_03

二、方法

  1. 方法是解决一类问题的步骤的有序组合
  2. 方法包含于类或者对象中
  3. 方法在程序中被创建,在其他地方被引用
package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        //int sum = add(1, 2);
        //System.out.println(sum);  //输出结果为3
        test();
    }
    //加法运算
    public static int add(int a,int b){//类变量
        return a + b;
    }
    public static void test(){
        for (int i = 0;i <= 1000;i++){
            if(i % 5 == 0){
                System.out.println(i + "\t");
            }
            if(i % (5*3) == 0){
                System.out.print("\n");
                System.out.println();
            }
        }
    }
}

再举个例子:

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        int max = max(10, 20);
        System.out.println(max);
    }
    public static int max(int a,int b){
        int result = 0;
        if(a == b){
            System.out.println("a = b");
            return 0;
        }
        if(a > b){
            result = a;
        }else {
            result = b;
        }
        return result;
    }
}

方法的重载

意思就是在一个类中,有相同的函数名称但是形参不同,举个例子:

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        double max = max(10.0, 20.0);
        System.out.println(max);
    }
    public static double max(double a,double b){
        double result = 0;
        if(a == b){
            System.out.println("a = b");
            return 0;
        }
        if(a > b){
            result = a;
        }else {
            result = b;
        }
        return result;
    }
    public static int max(int a,int b){//两个方法名字都是max,真正执行的方法取决于你定义的数据类型:int和double
        int result = 0;
        if(a == b){
            System.out.println("a = b");
            return 0;
        }
        if(a > b){
            result = a;
        }else {
            result = b;
        }
        return result;
    }
}

方法重载的规则:

  • 方法名必须相同参数列表必须不同(个数不同、或类型不同、参数排列顺序不同)
  • 返回值类型可相同可不同

可变参数(不知道要传多少参数)

  1. 在方法声明中,指定参数类型之后加一个省略号…
  2. 一个方法只能指定一个可变参数,而且他必须是方法的最后一个参数,任何普通参数都必须在他之前声明
public class Demo07 {
    public static void main(String[] args) {
        printMax(2,54,78,42,1);//输出为78.0
        printMax(new double[]{1,2,3});//定义了一个double类型的数组,输出为3.0
    }
    public static void printMax(double...numbers){
        if (numbers.length == 0){
            System.out.println("No argument passed");
            return;
        }
        double result = numbers[0];
        //排序
        for (int i = 1;i < numbers.length;i++){
            if (numbers[i] > result){
                result = numbers[i];
            }
        }
        System.out.println("The max value is" + result);
    }
}

递归

包括两部分:第一:递归头,什么时候不调用自身,第二:递归体,什么时候需要调用自身方法

package com.liyan;

public class Demo07 {
    public static void main(String[] args) {
        System.out.println(f(5));//输出结果为120,5*4*3*2*1 = 120
    }
    public static int f(int n){
        if(n == 1){
            return 1;
        }else {
            return n * f(n-1);
        }
    }
}

小作业:写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现

思路推荐:

  • 先写四个方法实现加减乘除功能
  • 利用循环+switch进行用户交互
  • 传递需要操作的两个数
  • 输出结果
package com.liyan;

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int a = scanner.nextInt();//nextInt():接收用户输入的数字并赋给a
        System.out.print("请输入运算符:");
        String b = scanner.next();//next():接收用户输入的字符串并赋给b
        System.out.print("请输入第二个数:");
        int c = scanner.nextInt();//nextInt():接收用户输入的数字并赋c
        int result = 0;
        if (c == 0) {
            System.out.println("输入错误!请重新输入!");
        } else {
            switch (b) {
                case "+":
                    result = add(a, c);
                    break;
                case "-":
                    result = reduce(a, c);
                    break;
                case "*":
                    result = mul(a, c);
                    break;
                case "/":
                    result = div(a, c);
                    break;
                default:
                    System.out.println("输入错误!");
            }
            System.out.println(a + b + c + "=" + result);
        }

        scanner.close();
    }
    public static int add(int num1,int num2){
        return num1 + num2;
    }
    public static int reduce(int num1,int num2){
        return num1 - num2;
    }
    public static int mul(int num1,int num2){
        return num1 * num2;
    }
    public static int div(double num1,double num2){
        if(num2 == 0){
            System.out.println("输入错误,分母不为0");
        }else {
            return (int) (num1 / num2);
        }
        return 0;
    }
}

上周总结:最近几天因为过年的缘故,导致网课没有跟上看,代码也非常不熟练,像switch语句和scanner语句,基本上都忘干净了,现找的资料写的计算机的这个题目,而且还不算很完善有些地方还需要改一下。马上过完年了,抓紧时间多看看网课多敲敲代码