JAVA学习DAY4~方法的使用~2020.12.14

Java学习DAY4——方法的使用

方法——就是函数,是一个可以被复用的代码片段

一、方法的定义和使用

1.1方法的定义

  • 标准格式
    public static 方法返回值类型 方法名称(形参列表){
    方法的指令;
    return 返回值;
    }
  • 示例
    public static int sum(int a,int b) {
        int sum=a+b;
        return sum;
    }

方法名称: sum
形参列表:(int a, int b)
返回值类型:int

1.2 方法的调用(invocation)

  • 标准格式

  • //不关心返回值
    方法名称(实参列表);

  • //将返回值保存在变量中
    变量=方法名称(实参列表);

  • //直接使用返回值参与运算
    方法名称(实参列表)+方法名称(实参列表);

  • 代码示例

public class method20201214 {
    public static void main(String[] args) {

        System.out.println("3,7的和是 :"+sum(3,7));
    }

sum(3,7)

1.3方法的执行过程

  • 若不调用方法,方法体内部代码不会被执行到。
  • 若调用了方法,代码会进入到方法体内部执行,在内部执行到return或整个方法执行结束
  • 然后回到调用位置继续往下执行。

二、练习

2.1 求两个数的最小值

  • 代码示例
public class method20201214 {
    public static void main(String[] args) {
//        System.out.println("3,7的和是 :"+sum(3,7));
        //两个整数的最小值
        System.out.println("3,7的最小值是:"+min(3,7));
        System.out.println("7,0的最小值是:"+min(7,0));
    }

    public static int  min(int a ,int b) {
        if (a>b) {
            return b;
        }else {
            return a;
        }
    }
}
  • 结果:
3,7的最小值是:3
7,0的最小值是:0

Process finished with exit code 0

2.2打印1-100之间的所有素数

  • 代码示例
public class method20201214 {
    public static void main(String[] args) {
        //打印1-100之间所有素数
        for (int i=1;i<=100;i++) {
           if (isPrimeNumber(i)) {
               System.out.println(i);
           }
        }
    }
    //判定是不是素数。返回true就是素数,返回false就不是素数
    public static boolean isPrimeNumber(int num) {
        //核心思路:找反例。只要找到某个整数能被num整除就认为这个num不是素数
        //所有的数字都找了一遍也找不到就认为是素数
        if (num == 1 || num == 0) {
            return false;
        }
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}
  • 结果
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Process finished with exit code 0

2.3 输出1000-2000之间的所有的闰年

  • 代码示例
public class method20201214 {
    //输出1000-2000之间的所有的闰年
public static void main(String[] args) {
    for (int i=1000;i<=2000;i++) {
        if (isLeapyear(i)){
            System.out.println(i+"是闰年");
        }
    }
}
    //判定是否是闰年
    public static boolean isLeapyear(int year){
        if (year%100==0) {
            if (year%400==0) {
                return true;
            }else {
                return false;
            }
        }else {
            if (year % 4 == 0) {
                return true;
            } else {
                return false;
            }
        }
    }
}
  • 结果
1004是闰年
1008是闰年
1012是闰年
1016是闰年
1020是闰年
1024是闰年
1028是闰年
1032是闰年
1036是闰年
1040是闰年
1044是闰年
1048是闰年
1052是闰年
1056是闰年
1060是闰年
1064是闰年
1068是闰年
1072是闰年
1076是闰年
1080是闰年
1084是闰年
1088是闰年
1092是闰年
1096是闰年
1104是闰年
1108是闰年
1112是闰年
1116是闰年
1120是闰年
1124是闰年
1128是闰年
1132是闰年
1136是闰年
1140是闰年
1144是闰年
1148是闰年
1152是闰年
1156是闰年
1160是闰年
1164是闰年
1168是闰年
1172是闰年
1176是闰年
1180是闰年
1184是闰年
1188是闰年
1192是闰年
1196是闰年
1200是闰年
1204是闰年
1208是闰年
1212是闰年
1216是闰年
1220是闰年
1224是闰年
1228是闰年
1232是闰年
1236是闰年
1240是闰年
1244是闰年
1248是闰年
1252是闰年
1256是闰年
1260是闰年
1264是闰年
1268是闰年
1272是闰年
1276是闰年
1280是闰年
1284是闰年
1288是闰年
1292是闰年
1296是闰年
1304是闰年
1308是闰年
1312是闰年
1316是闰年
1320是闰年
1324是闰年
1328是闰年
1332是闰年
1336是闰年
1340是闰年
1344是闰年
1348是闰年
1352是闰年
1356是闰年
1360是闰年
1364是闰年
1368是闰年
1372是闰年
1376是闰年
1380是闰年
1384是闰年
1388是闰年
1392是闰年
1396是闰年
1404是闰年
1408是闰年
1412是闰年
1416是闰年
1420是闰年
1424是闰年
1428是闰年
1432是闰年
1436是闰年
1440是闰年
1444是闰年
1448是闰年
1452是闰年
1456是闰年
1460是闰年
1464是闰年
1468是闰年
1472是闰年
1476是闰年
1480是闰年
1484是闰年
1488是闰年
1492是闰年
1496是闰年
1504是闰年
1508是闰年
1512是闰年
1516是闰年
1520是闰年
1524是闰年
1528是闰年
1532是闰年
1536是闰年
1540是闰年
1544是闰年
1548是闰年
1552是闰年
1556是闰年
1560是闰年
1564是闰年
1568是闰年
1572是闰年
1576是闰年
1580是闰年
1584是闰年
1588是闰年
1592是闰年
1596是闰年
1600是闰年
1604是闰年
1608是闰年
1612是闰年
1616是闰年
1620是闰年
1624是闰年
1628是闰年
1632是闰年
1636是闰年
1640是闰年
1644是闰年
1648是闰年
1652是闰年
1656是闰年
1660是闰年
1664是闰年
1668是闰年
1672是闰年
1676是闰年
1680是闰年
1684是闰年
1688是闰年
1692是闰年
1696是闰年
1704是闰年
1708是闰年
1712是闰年
1716是闰年
1720是闰年
1724是闰年
1728是闰年
1732是闰年
1736是闰年
1740是闰年
1744是闰年
1748是闰年
1752是闰年
1756是闰年
1760是闰年
1764是闰年
1768是闰年
1772是闰年
1776是闰年
1780是闰年
1784是闰年
1788是闰年
1792是闰年
1796是闰年
1804是闰年
1808是闰年
1812是闰年
1816是闰年
1820是闰年
1824是闰年
1828是闰年
1832是闰年
1836是闰年
1840是闰年
1844是闰年
1848是闰年
1852是闰年
1856是闰年
1860是闰年
1864是闰年
1868是闰年
1872是闰年
1876是闰年
1880是闰年
1884是闰年
1888是闰年
1892是闰年
1896是闰年
1904是闰年
1908是闰年
1912是闰年
1916是闰年
1920是闰年
1924是闰年
1928是闰年
1932是闰年
1936是闰年
1940是闰年
1944是闰年
1948是闰年
1952是闰年
1956是闰年
1960是闰年
1964是闰年
1968是闰年
1972是闰年
1976是闰年
1980是闰年
1984是闰年
1988是闰年
1992是闰年
1996是闰年
2000是闰年

Process finished with exit code 0

2.4输出乘法口诀表

  • 代码示例
        //输出乘法口诀表
public class method20201214 {
    public static void main(String[] args) {
        for (int row=1;row<=9;row++) {
            printLine(row);
        }

    }

    public static void printLine(int row) {
        //乘法口诀表上,第row行有row列
        for (int col = 1;col<=row;col++) {
            System.out.printf("%dx%d=%d ",col,row,col*row);
        }
        System.out.println();
    }
  • 结果
1x1=1 
1x2=2 2x2=4 
1x3=3 2x3=6 3x3=9 
1x4=4 2x4=8 3x4=12 4x4=16 
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 

Process finished with exit code 0

2.5 求两个正整数的最大公约数

  • 代码
     //求两个数的最大公约数
    public class method20201214 {
    public static void main(String[] args) {
        double result=calcGreatComonDivisor( 100,120) ;
        System.out.println(result);
    }
    public static double calcGreatComonDivisor(int a,int b) {
        //暴力求解,从a,b的最小值开始依次递减进行求解,拿到当前的数字来试。
        // 看这个数字能否同时被a,b整除,若可以该数字一定是最大公约数
        //1.先找a,b最小值
        int min=min(a,b);
        for (int i=min;i>=1;i--) {
            if (a%i==0&&b%i==0) {
                return  i;
            }
        }
        return 1;
    }
    public static  int min(int a,int b) {
        if (a<b) {
            return a;
        }else {
            return  b;
        }
    }
}
  • 结果
    在这里插入图片描述

2.6 计算分数的值

  • 代码
   //数列求和,基本思路是把相邻两项当成一项
public class method20201214 {
    public static void main(String[] args) {
        double result=seriseSum(100);
        System.out.println(result);

    }
    public  static double seriseSum(int n){
        double sum=0.0;
        for (int i=1;i<=n;i+=2) {
            sum+=calcItem(i);

        }
        return  sum;
    }

    public static double calcItem(double i) {
        return  1/i-1/(i+1);
    }
}
  • 结果
    在这里插入图片描述

2.7 程序编写1-100所有整数中出现多少个数字9

  • 代码
public class method20201214 {
    public static void main(String[] args) {
        int acount=calcNineAcount();
        System.out.println(acount);
    }

    public static int calcNineAcount() {
        int count=1;
        for (int i=1;i<=100;i++) {
            if (i%10==9) {
                count ++;
            }
            if ((i/10)%10==0) {
                count++;
            }
        }
        return count;
    }
}
  • 结果
    在这里插入图片描述

2.8 求出0~999之间的所有“水仙花数"并输出

  • 代码
//求0-999之间的水仙花数
public class method20201214 {
    public static void main(String[] args) {
        for(int i=0; i <= 999; i++) {
            if (isNarcissusNum(i)){
                System.out.println(i);
            }
        }
    }

    public static boolean isNarcissusNum(int i) {
        //求出个位
        int ge=i%10;
        //取出十位
        int tem=i/10;
        int shi=tem%10;
        //取出百位
        int tmp=i/100;
        int bai=tmp%10;
        //判断是不是立方和相等
        if (power3(ge)+power3(bai)+power3(shi)==i) {
            return true;
        }
        return  false;
    }

    private static int power3(int i) {
        return i*i*i;
    }

}
  • 结果
    在这里插入图片描述

2.9 猜数字

  • 代码
public  class method20201214{
    public static void main(String[] args) {
        while (true) {
            int choice=memu();
            if (choice==1) {
                //开始一局游戏
                game();
            }else if (choice==0){
                //结束程序
                System.out.println("goodbye");
                break;
            }else{
                //输入有误
                System.out.println("您的输入有误");
            }
        }
    }

    public static void game() {
        //生成一个1-100的随机整数
        Random random=new Random();
        int toGuess=random.nextInt(100);
        //让玩家输入数字进行猜
        Scanner scanner=new Scanner(System.in);

        while(true) {
            System.out.println("请输入要猜的数字");
            int num=scanner.nextInt();
            //进行比较
            if (num<toGuess) {
                System.out.println("低了");
            }else if (num>toGuess) {
                System.out.println("高了");
            }else {
                System.out.println("恭喜你,猜对了");
                break;
            }
        }
    }

    public static int memu() {
        System.out.println("=================");
        System.out.println("1.开始游戏");
        System.out.println("0.退出游戏");
        System.out.println("=================");
        System.out.println("请输入您的选择");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
                
    }
}
  • 结果
    在这里插入图片描述

2.10 编写代码模拟三次密码输入的场景

我们需要对两个字符串进行比较,Java里不能直接用“==”来进行比较字符串相等,这是一种特殊情况
Java中需要用equals来比较两个字符串相等
错误示例

if (input==password) {
}

正确示例

if (input.equals(password)) {
}
  • 代码
import java.util.Scanner;
public  class method20201214 {
    public static void main(String[] args) {
        inputPassword();
    }

    public static void inputPassword() {
        String password = "123456";
        Scanner scanner = new Scanner(System.in);
        int i=0;
        for ( ; i <3; i++) {
            System.out.println("请输入密码");
            String input = scanner.next();
            if (input.equals(password)) {
                System.out.println("密码正确,登录成功");
                break;
            } else {
                System.out.println("密码错误,请重新输入");
            }
        }
        if ( i==3) {
            System.out.println("您已经连续输入三次,系统强制退出");
        }
    }
}
  • 结果在这里插入图片描述
    在这里插入图片描述

写在最后的话

  • 关于退出码
    在这里插入图片描述
    退出码为0,程序正确执行完毕;
    在这里插入图片描述
    退出码非0,程序异常关闭。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值