Java零基础教程专栏——方法(2)

简介: 题目3(训练)通过键盘录入两个整数n和m。n代表行数,m代表列数。定义一个方法,方法的功能是打印n行m列的@符号。执行效果如下:

题目3(训练)

通过键盘录入两个整数n和m。n代表行数,m代表列数。定义一个方法,方法的功能是打印n行m列的@符号。执行效果如下:

请输入行数:
4
请输入列数:
5
@@@@@
@@@@@
@@@@@
@@@@@

训练提示

  1. 方法内需要知道行数和列数,所以参数应该是两个整数类型。
  2. 方法不需要返回任何值,所以返回值类型应该是void。

解题方案

操作步骤

  1. 创建键盘录入对象。
  2. 通过键盘录入n的值代表行数,通过键盘录入m的值代表列数。
  3. 定义print()方法,方法的参数是两个整数n和m,返回值类型是void。
  4. 在方法中使用循环嵌套按照指定格式输出内容。
  5. 在主方法中调用print方法,传入n和m两个参数。

参考答案

public class Demo3 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //输入行数
        System.out.println("请输入行数:");
        int n = sc.nextInt();
        //输入列数
        System.out.println("请输入列数:");
        int m = sc.nextInt();
        //调用方法
        print(n,m);
    }
    //定义打印的方法
    public static void print(int n, int m){
        //循环输入n行
        for (int i = 0; i < n; i++) {
            //循环输出m列
            for (int j = 0; j < m; j++) {
                System.out.print("@");
            }
            //每一行的最后输出换行符
            System.out.println();
        }
    }
}

题目4(训练)

我们知道数学中有九九乘法表。请定义一个方法,方法的功能是打印nn乘法表。在主方法中键盘录入取值范围为[1-9]的变量n,测试方法。执行效果如下:

请输入一个1-9之间的整数:
4
乘法表:
1×1=1 
1×2=2 2×2=4 
1×3=3 2×3=6 3×3=9 
1×4=4 2×4=8 3×4=12  4×4=16

训练提示

  1. 方法需要一个整数变量n,那么方法的参数如何定义?
  2. 方法的目的是做打印,那么方法的返回值类型是什么?

解题方案

操作步骤

创建键盘录入对象。


通过键盘输入一个整数变量n。


定义乘法表的方法,方法参数是int类型参数n,返回值类型void。


3.1. 方法内部定义嵌套循环,外层循环从1开始,到n结束,代表打印n行。


3.2.内层循环从1开始,到i结束,代表每行打印i个式子。


3.3.每行最后打印换行。


在主方法中对方法进行调用。

参考答案

public class Demo4 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //键盘录入一个整数
        System.out.println("请输入一个1-9之间的整数:");
        int n = sc.nextInt();
    //调用方法
        method(n);
    }
  //定义乘法表方法
    public static void method(int n) {
        System.out.println("乘法表:");
        //外层循环n次
        for (int i = 1; i <= n; i++) {
            //内存循环i次
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "×" + i + "=" +j*i + "\t");
            }
            //每行结尾执行换行
            System.out.println();
        }
    }
}

题目5(训练)

在主方法中通过键盘录入三个整数。定义一个方法,方法接收三个整数变量,在方法中从大到小依次打印三个变量。执行效果如下:

请输入第一个整数:10
请输入第二个整数:30
请输入第三个整数:20
从大到小的顺序是: 30 20 10 

训练提示

  1. 方法需要接受三个整数,那么方法的形式参数如何定义?
  2. 方法没有返回值的需求,返回值类型是什么?

解题方案

操作步骤

使用键盘录入分别录入三个整数。


定义method方法,方法的参数是三个int类型,方法的返回值类型是void。


2.1. 定义整数变量max用于存储最大值,定义min变量用于存储最小值。


2.2. 使用if…else…多分支判断语句计算三个整数中的最大值并赋值给max。


2.3. 使用if…else…多分支判断语句计算三个整数中的最小值并赋值给min。


2.4. 定义变量mid代表中间数,三个整数的和减去max,再减去min,就是中间数的值。


2.5. 依次打印最大值,中间值和最小值。


在主方法中调用method方法,传入参数。

参考答案

public class Demo5 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //分别输入三个整数
        System.out.println("请输入第一个整数:");
        int a = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int b = sc.nextInt();
        System.out.println("请输入第三个整数:");
        int c = sc.nextInt();
        //调用方法
        method(a,b,c);
    }
    //定义方法
    public static void method(int a, int b, int c) {
        //定义变量存储最大值
        int max = 0;
        //定义变量存储最小值
        int min = 0;
        //判断最大值
        if(a > b && a > c ){
            max = a;
        }else if(b > a && b > c){
            max = b;
        }else{
            max = c;
        }
        //判断最小值
        if(a < b && a < c ){
            min = a;
        }else if(b < a && b < c){
            min = b;
        }else{
            min = c;
        }
        //计算中间值
        int mid = a + b + c - max - min;
        //按照从大到小的顺序输出
        System.out.println("从大到小的顺序是:" + max + " "+ mid + " " + min);
    }
}

题目6(训练)

数字是有绝对值的,负数的绝对值是它本身取反,非负数的绝对值是它本身。请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。

训练提示

  1. 方法的功能是得到一个小数的绝对值,参数应该是一个小数类型。
  2. 绝对值需要被返回,返回值类型应该也是小数类型。

解题方案

操作步骤


定义一个小数变量num。


定义获取绝对值的方法,方法的参数是一个double类型,返回值类型是double。


在方法内部使用if…else…判断。


3.1. 如果是负数则对负数取反并返回。


3.2. 如果不是负数则直接返回数字本身。


在主方法中调用绝对值方法,传入参数num,并接受返回值。


打印返回的结果。

参考答案

public class Demo6 {
    public static void main(String[] args) {
        double num = -3.14;
        //调用方法
        double abs = abs(num);
        //打印结果
        System.out.println(num +"的绝对值是" + abs);
    }
    //定义绝对值方法
    public static double abs(double num){
        if(num < 0){
            //如果数字是负数则取反
            return -num;
        }else{
            //如果是非负数则返回本身
            return num;
        }
    }
}

题目7(综合)

请定义一个方法,对正数的小数进行四舍五入的操作(不考虑负数情况)。四舍五入之后的结果是一个int整数类型并返回。最后对方法进行测试。

训练提示

  1. 要求对小数进行操作,方法的参数类型是一个小数类型。
  2. 操作之后的结果是int整数,那么返回值类型是int类型。
  3. 四舍五入的操作关键是十分位(小数第一位),如何获取十分位?

解题方案

操作步骤

  1. 定义一个正数的小数数字num。
  2. 定义四舍五入的方法,方法的参数是一个double类型num,返回值类型是int类型。

将小数乘以10后强转为int,再对10取余,能过获取到十分位数字,赋值给int类型变量a。

对a进行判断,如果a小于4则把num强转为int并返回(舍去小数)。

如果a大于等于5则把num强转为int后再加一并返回(相当于进一位)。

在主方法中调用四舍五入方法,传入参数num,并接收返回值。

打印返回的结果。

参考答案

public class Demo7 {
    public static void main(String[] args) {
        double num = 3.44;
        //调用方法
        int abs = round(num);
        //打印结果
        System.out.println(num +"四舍五入之后是" + abs);
    }
    //定义四舍五入方法
    public static int round(double num){
        //将小数乘以10后强转为int,再对10取余,能过获取到十分位(小数第一位)
        int a = (int)(num * 10) % 10;
        if(a < 5){
            //如果a小于5,则四舍
            return (int)num;
        }else{
            //如果a大于等于5,则五入
                return (int)num + 1;
        }
    }
}

题目8(综合扩展)

一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)

888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出

训练提示

奖项要随机出现,但奖金不是连续的数字,不能被随机产生。能随机产生的只有数组的索引了,可以使用随机索引来代表随机元素。因为索引和元素是一一对应的,

哪些奖被抽过了,哪些奖没有被抽过,要定义一个数组来存放已经被抽过的奖项。

每个奖项只能被抽出一次,要写一个方法来控制奖项不重复。

解题方案

使用数组存放多个奖金,再使用另一个数组存放已经被抽过的奖金,使用方法来判断某个奖金是否已经被抽取过。

操作步骤

定义奖金的数组arr。

定义数组brr准备存放已经被抽过的奖金,两个数组长度相同。

定义一个变量index,用户代表数组brr的索引。

定义方法,判断数组中是否存在某数字,存在返回true,不存在返回false。

写一个while循环,如果index<arr.length则说明奖项没有被抽完继续抽取。

在循环中使用随机数产生一个随机索引i。

使用步骤4的方法判断brr数组中是否包含arr[i]奖金。

如果不包含,则打印arr[i]奖金,并且把它放入brr数组中代表已经被抽取过,同时index加一。

参考答案

public class Demo8 {
    public static void main(String[] args) {
        //1.定义存放奖金的数组
        int[] arr = {10000,1000,588,888,2};
        //2.定义数组存放已经被取过的奖金
        int[] brr = new int[5];
        //3.定义变量表示brr的索引
        int index = 0;
        //4.创建随机数对象
        Random r = new Random();
        //5.定义循环反复获取随机数,如果index小于arr的长度则继续循环
        while(index < arr.length){
            //5.1每次生成一个随机索引对应一个奖金
            int i = r.nextInt(arr.length);
            //5.2调用方法判断这个奖金是否被获取过
            boolean b = exist(brr, arr[i]);
            //5.3b是false代表这个奖金没有被抽取过
            if(!b) {
                //5.4把获取之后的奖金存放到brr中
                brr[index] = arr[i];
                //5.5index索引向后移动一次
                index++;
                //5.6打印本次被抽出的奖项
                System.out.println( arr[i] + "元的奖金被抽出");
            }
        }
    }
    //6.定义方法:判断brr数组中是否存在num这个数字
    public static boolean exist(int[] brr,int num){
        //6.1对数组进行遍历
        for (int i = 0; i < brr.length; i++) {
            //6.2判断如果找到数字,则返回true
            if(brr[i] == num){
                return true;
            }
        }
        //6.3如果最终没有找到则返回false
        return false;
    }
}

相关文章
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
209 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
20天前
|
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
47 25
|
14天前
|
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
24 1
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
28天前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
48 5
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
2月前
|
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
203 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
2月前
|
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。