JavaDay6

news/2025/9/17 21:00:21/文章来源:https://www.cnblogs.com/Sunyn-blogs/p/19097533

可变参数

  • JDK1.5开始,Java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后加一个省略号(...)。
  • 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
package method;public class Demo04 {public static void main(String[] args) {Demo04 demo04 = new Demo04();demo04.printMax(10,20,30);}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);}}
输出:
30

递归

  • A方法调用B方法,我们很容易理解!
  • 递归就是:A方法调用A方法!就是自己调用自己。
  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归结构包括两个部分:
    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。
package method;public class Demo06 {public static void main(String[] args) {//递归思想System.out.println(fn(5));}public static int fn(int n){if(n == 1){return 1;}else {return n * fn(n-1);}}
}
输出:
120

Test

package method;
import java.util.Scanner;
public class Test {// 加法:支持任意数量的数字相加public static double add(double... nums) {double sum = 0;for (int i = 0; i < nums.length; i++) {sum += nums[i];}return sum;}// 乘法:支持任意数量的数字相乘public static double multiply(double... nums) {if (nums.length == 0) {System.out.println("错误:至少需要一个数字");return Double.NaN;}double product = 1;for (int i = 0; i < nums.length; i++) {product *= nums[i];}return product;}// 减法:第一个数字减去后续所有数字public static double subtract(double firstNum, double... otherNums) {double result = firstNum;for (int i = 0; i < otherNums.length; i++) {result -= otherNums[i];}return result;}// 除法:第一个数字除以后续所有数字public static double divide(double firstNum, double... otherNums) {double result = firstNum;for (int i = 0; i < otherNums.length; i++) {if (otherNums[i] == 0) {System.out.println("错误:除数不能为0");return Double.NaN;}result /= otherNums[i];}return result;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);char continueChoice = 0;do {System.out.println("请选择操作符(+、-、*、/):");char operator = scanner.next().charAt(0);System.out.println("请输入要计算的数字个数:");int count = scanner.nextInt();if (count < 1) {System.out.println("错误:数字个数不能小于1");continue;}// 在这里明确定义nums数组,确保在整个循环块中可见double[] nums = new double[count];System.out.println("请输入" + count + "个数字:");for (int i = 0; i < count; i++) {nums[i] = scanner.nextDouble();}double result = 0;boolean isValid = true;switch (operator) {case '+':// 此处的nums就是上面定义的数组,作用域有效result = add(nums);break;case '-':if (count == 1) {result = nums[0];} else {result = subtract(nums[0], getSubArray(nums, 1));}break;case '*':result = multiply(nums);if (Double.isNaN(result)) {isValid = false;}break;case '/':if (count == 1) {result = nums[0];} else {result = divide(nums[0], getSubArray(nums, 1));if (Double.isNaN(result)) {isValid = false;}}break;default:System.out.println("错误:无效的操作符");isValid = false;}if (isValid) {System.out.print("计算结果:");for (int i = 0; i < count; i++) {System.out.print(nums[i]);if (i < count - 1) {System.out.print(" " + operator + " ");}}System.out.println(" = " + result);}System.out.println("是否继续计算?(y/n)");continueChoice = scanner.next().charAt(0);} while (continueChoice == 'y' || continueChoice == 'Y');System.out.println("计算器程序已退出。");scanner.close();}// 辅助方法:获取数组的子数组(从指定索引开始)private static double[] getSubArray(double[] array, int startIndex) {if (startIndex >= array.length) {return new double[0];}double[] subArray = new double[array.length - startIndex];System.arraycopy(array, startIndex, subArray, 0, subArray.length);return subArray;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的大学生心理互助社区系统设计与建立

基于SpringBoot+Vue的大学生心理互助社区系统设计与建立2025-09-17 20:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

Ubuntu Linux 云服务器常见安全漏洞修复方法汇总 Apache/OpenSSH/DNS

安全漏洞名称/CVE修复方案1. Apache HTTP Server 缓冲区错误漏洞(CVE-2023-31122)2. Apache HTTP Server 资源管理错误漏洞(CVE-2023-43622)3. Apache httpd 资源管理错误漏洞(CVE-2024-27316)4. Apache HTTP Se…

JavaScript学习笔记(1)

JavaScript学习笔记(1)引用外部文件中的js文件:<script src="Path"></script> 和html文件相同,路径从index.html所在的根目录起。 输出window.alert() 弹出警告框,警告框的样式由浏览器决定…

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。 留言:之前再讲mysql时候,经常有人可以远程登录的时候,结果发现没办法本地登录了,具体体现方式是这样的(看问题体现):现在我可以明确的告诉你们,是…

Min-Max 容斥小记

Min-Max 容斥小记 Min-Max 容斥 对于集合 \(S\),定义 \(\max(S)=\max_{x\in S} x\),同理可以定义 \(\min(S)\)。Min-Max 容斥给出了以下结论: \[\max(S)=\sum _{T\subseteq S} (-1)^{|T|-1}\min(T) \]对 \(\min\) 也…

【POJ1737】Connected Graph - Harvey

题意 求有标号联通无向图的个数。 思路 不妨设 \(f_{n}\) 表示有 \(n\) 个点时有标号联通无向图的个数。 考虑用总情况减去不连通情况。 总情况 总情况显然是 \(2^{\binom{n}{2}}\)(每两个点的边选或不选)。 不连通 …

详细介绍:VirtualBox 免费轻量的全能虚拟机,跨平台系统随心装

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AI智能体开发实战:从提示工程转向上下文工程的完整指南

还记得去年各大公司给提示工程师开出30万美元年薪的疯狂时期吗?现在这些招聘信息基本销声匿迹了。从技术角度看,提示工程确实有些"投机取巧"的意味——本质上就是让人们相信自己在做"工程"工作的…

解码C语言九条语句

选择结构 if 一、基本语法 if (条件表达式) { // 条件为真时执行的代码块 } else { // 条件为假时执行的代码块(可选) }二、条件表达式的本质条件表达式可以是任何返回整型值的表达式:0 表示假(false)。 非0 表示…

django登录注册案例(上) - 详解

django登录注册案例(上) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

实用指南:C++ 类型衰变(Type Decay)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

深入解析:Python的输出缓冲区机制

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

某交互题选讲的补题记录

CF750F New Year and Finding Roots 考虑第一步只能随机找点,找完点之后除非找到叶子或者根,不然完全等于啥都不知道。 于是找叶子节点,从这个点的两个邻边往下一直走一定能走到叶子,那么此时这条链的中点的父亲就…

openwrt ipv6 NAT6配置

在诸如校园网或者其他需要认证的网络条件下,由于实名制上网的要求,通常不支持DHCP6-PD,因此要使用IPV6需要使用NAT6目前最新版本的官方openwrt(23.05)已经自动支持NAT6了(firewall.xxx.masq6),因此,如果需要开启…

奶龙抽象语录

奶龙の无上恩情!!!开坑于 $ 2025-9-15 $ 最后更新于 $ 2025-9-17 $上课 班会 我们为什么要规范普通话,不就跟当年秦始皇车同文,书同轨一样吗? —— 25-9-16 其他 我们班五十几号人,我也不要求别的,声音比\(11\…

解题报告-P11670 [USACO25JAN] Cow Checkups S

P11670 [USACO25JAN] Cow Checkups S 题目描述 Farmer John 的 \(N\)(\(1 \leq N \leq 5 \cdot 10^5\))头奶牛站成一行,奶牛 \(1\) 在队伍的最前面,奶牛 \(N\) 在队伍的最后面。FJ 的奶牛也有许多不同的品种。他用从 \(1\) 到 \(N\) 的整数来表示每一品种。队伍从前到后第 …

word vba 对 带编号格式的PO单 段落下添加对应的图片

Attribute VB_Name = "APO_PathStaging" Option Explicit Configuration Constants Private Const BASE_FOLDER As String = "\\10.0.0.10\部门共享\PO\" Private Const START_PARA As Long = 582 Private Const PATH_TAG As String = "[IMG] " …

解题报告-P11671 [USACO25JAN] Farmer Johns Favorite Operation S

P11671 [USACO25JAN] Farmer Johns Favorite Operation S 题目描述 又是 Farmer John 的农场上寒冷而无聊的一天。为了打发时间,Farmer John 发明了一种关于在整数数组上进行操作的有趣的休闲活动。 Farmer John 有一…

详细介绍:javascript文本长度检测与自动截取,用于标题长度检测

详细介绍:javascript文本长度检测与自动截取,用于标题长度检测2025-09-17 20:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !imp…