当前位置: 首页 > news >正文

从零学会java(输入输出以及方法)

文章目录

  • 一.java的输出
    • 1.1 输出到控制台
  • 二.java的输入
    • 2.1 从键盘单组输入
      • 2.1.1 Scanner 基本使用
      • 2.1.2 注意事项
        • 1. 输入顺序问题
        • 2. Scanner 关闭
        • 3. 数据类型匹配
        • 4. 解决换行问题的方法
    • 2.2从键盘多组输入
  • 三.Java中的方法
    • 3.1方法的定义
    • 3.2方法的示例
      • 示例一:实现⼀个函数,检测⼀个年份是否为闰年
      • 示例二:实现⼀个两个整数相加的⽅法
    • 3.3使用方法的注意事项
    • 3.4方法的调用
      • 示例:计算1!+2!+3!+4!+5!
      • 注意
    • 3.5方法的重载
      • 方法重载的注意事项
    • 3.6递归

一.java的输出

1.1 输出到控制台

intx=10;System.out.println("haha");System.out.print("haha");System.out.printf("x = %d\n",x);

println打印自带换行,print打印不带换行,而printf打印是格式化打印和C语言中的一致
这个表格没必要记住,⽤到的时候根据需要查⼀下就⾏了.

二.java的输入

2.1 从键盘单组输入

2.1.1 Scanner 基本使用

使⽤Scanner读取字符串/整数/浮点数,需要先导⼊该类(后面会详细学习导入):

Scannerscan=newScanner(System.in);System.out.println("请输入你的名字");Stringname=scan.nextLine();System.out.println("请输入你的年龄");intage=scan.nextInt();System.out.println("请输入你的工资");doublesalary=scan.nextDouble();scan.close();// 注意:使用完成后要调用关闭方法

2.1.2 注意事项

1. 输入顺序问题

名字和年龄的输入顺序不能交换,否则会出现问题:

  • 正常情况:先输入名字,再输入年龄
  • 问题情况:如果先输入年龄,再输入名字,年龄输入完后按下的回车键会被scan.nextLine()读取,导致名字输入被跳过

正常运行结果

不正常运行结果

2. Scanner 关闭

重要:既然调用了 Scanner,就要记得关闭!使用完成后必须调用close()方法释放资源。

3. 数据类型匹配
  • nextLine():读取整行字符串(包括空格)
  • nextInt():读取整数
  • nextDouble():读取浮点数
  • 如果输入的数据类型与方法不匹配,会抛出InputMismatchException异常
4. 解决换行问题的方法

如果确实需要先读取数字再读取字符串,可以使用以下方法:

Scannerscan=newScanner(System.in);System.out.println("请输入你的年龄");intage=scan.nextInt();scan.nextLine();// 消耗掉换行符System.out.println("请输入你的名字");Stringname=scan.nextLine();scan.close();

2.2从键盘多组输入

在一个程序题目中我们经常看到要多组输入,该怎么做呢

//⽰例:使⽤Scanner循环读取N个数字,并求取其平均值Scannerscan=newScanner(System.in);doublesum=0;intnum=0;while(scan.hasNext()){doublex=scan.nextDouble();sum+=x;num++;}System.out.println("avg = "+sum/num);scan.close();

可以看见多组输入的关键是while(scan.hasNext())

三.Java中的方法

3.1方法的定义

方法和C语言中的函数类似,主要由修饰符,返回值类型,方法名称,参数及其代码构成

修饰符 返回值类型 ⽅法名称([参数类型 形参...]){⽅法体代码;[return返回值];}

3.2方法的示例

示例一:实现⼀个函数,检测⼀个年份是否为闰年

publicclassTest{publicstaticbooleanisLeapYear(intyear){if((year%4==0&&year%100!=0)||(year%400==0)){returntrue;}returnfalse;}publicstaticvoidmain(String[]args){//实现⼀个函数,检测⼀个年份是否为闰年ScannerScan=newScanner(System.in);intyear=Scan.nextInt();System.out.println(isLeapYear(year));}}

示例二:实现⼀个两个整数相加的⽅法

publicclassTEST{publicstaticintadd(intx,inty){returnx+y;}publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intx=scan.nextInt();inty=scan.nextInt();System.out.println(add(x,y));}}

3.3使用方法的注意事项

  • 修饰符:现阶段直接使⽤public static固定搭配;
  • 返回值类型:如果⽅法有返回值,返回值类型必须要与返回的实体类型⼀致,如果没有返回值,必须写成void;
  • 方法名要采用小驼峰的形式;
  • 在Java当中,⽅法必须写在类当中,⽅法不能嵌套定义

3.4方法的调用

  • 定义⽅法的时候,不会执⾏⽅法的代码.只有调⽤的时候才会执⾏.
  • 调⽤⽅法的时候,需要使⽤⽅法名+参数列表的形式进⾏调⽤
  • 如果⽅法有返回值,需要接收返回值结果

示例:计算1!+2!+3!+4!+5!

publicstaticintfac(intx){intret=1;for(inti=1;i<=x;i++){ret*=i;}returnret;}publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);while(scan.hasNext()){intx=scan.nextInt();System.out.println(fac(x));}}

注意

  • 在Java中,实参的值永远都是拷⻉到形参中,形参和实参本质是两个实体.区别于C语言,Java中⽆法获取栈上的局部变量的地址,如果想要通过形参改变实参,我们需要具备类和对象的知识*

3.5方法的重载

当既想计算两个整数相加,也想计算两个⼩数相加的时候,此时会出现参数类型不匹配的情况,如果想要计算那就要写两个方法名,有没有不那么繁琐的方法呢?

  • 原方法
publicstaticintaddInt(intx,inty){returnx+y;}publicstaticdoubleaddDouble(doublex,doubley){returnx+y;}
  • 重载方法
publicstaticintadd(intx,inty){returnx+y;}publicstaticdoubleadd(doublex,doubley){returnx+y;}publicstaticdoubleadd(doublex,doubley,doublez){returnx+y+z;}

在Java中,如果多个⽅法的名字相同,参数列表不同,则称该⼏种⽅法被重载了。

add(1,2);// 调⽤add(int, int)add(1.5,2.5);// 调⽤add(double, double)add(1.5,2.5,3.5);// 调⽤add(double, double, double)

方法重载的注意事项

  • ⽅法名必须相同
  • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  • 返回类型无所谓,可以相同也可以不同

3.6递归

//递归求N的阶乘publicstaticintfac(intx){if(x==1){return1;}else{returnx*fac(x-1);}}publicstaticvoidmain(String[]args){System.out.println(fac(5));}

调用过程

以上就是我的分享了,如果有什么错误,欢迎在评论区留言,最后,谢谢大家的观看!

http://www.jsqmd.com/news/933406/

相关文章:

  • 3个实战技巧:用Zotero-GPT让文献管理效率提升300%
  • 从FTP下载到NetCDF生成:一份给大气污染模型新手的GDAS1数据处理全流程保姆级教程
  • 【Sora 2虚拟偶像视频爆发前夜】:20年AIGC架构师亲测的5大合规落地红线与3步商用避坑指南
  • STS-Bcut语音转字幕终极指南:3步实现视频自动字幕生成
  • 告别野路子:用STM32CubeIDE和HAL库给STM32G070做IAP,这才是现代开发流程
  • 2. OpenClaw 架构落地指南:部署、渠道集成与安全边界全解
  • 别再为OOM发愁了!手把手教你用Deepspeed ZeRO-3在单卡上跑起百亿大模型
  • Godot4.2 AStar2D避坑指南:连接点(connect_points)的‘双向’参数到底怎么用?实测对比
  • Godot-MCP实战指南:如何用自然语言编程颠覆你的游戏开发工作流
  • 【会议征稿通知 | 天津理工大学、挪威科技大学主办 | IEEE出版 | EI 、Scopus稳定检索】第二届无人系统与技术国际学术会议(UST 2026)
  • RoboManipBaselines:机器人模仿学习框架解析与应用
  • 告别手动画框!用SurgicalSAM+PyTorch,5分钟搞定手术器械自动分割
  • 别再只用Docker了!手把手教你用tar包在Linux服务器原生部署Neo4j 3.5.x
  • 别再只会用7805了!手把手教你用MOS管和电感DIY一个12V转5V的DC-DC开关电源
  • 沟槽基坑土方计算软件
  • Flowframes视频插帧技术深度解析与实战应用指南
  • 从Kaggle竞赛到业务落地:我如何根据数据特征在XGBoost、LightGBM和CatBoost之间做选择
  • STM32F103C8T6 + MPU6050:用HAL库和卡尔曼滤波DIY一个简易姿态仪(附完整代码)
  • 公路隧道铁路隧道裂缝渗漏水剥落识别分割数据集labelme格式471张3类别
  • UE5独立游戏开发:用本地化控制板搞定UI多语言切换(附批量翻译技巧)
  • 别再只盯着NeRF了!用3D高斯泼溅(Gaussian Splatting)在Unity里5分钟搞个实时渲染Demo
  • Linux 内置命令与外部命令超详解(区别、原理、查找、执行流程)
  • 告别简陋文档!手把手教你用HTML和reStructuredText美化Codesys自定义库帮助文档
  • UE5 C++ 游戏模式配置避坑指南:从创建类到世界场景设置,一步到位
  • 【会议征稿通知 | 广州软件学院主办 | ACM、AP出版 | EI 、Scopus稳定检索】第六届教育、信息管理与服务科学国际学术会议(EIMSS 2026)
  • Umi-CUT:3步掌握高效图片批量处理全攻略
  • 如何在Windows 10/11系统上实现专业级窗口毛玻璃特效:DWMBlurGlass完整配置指南
  • 【c#基础】9.面向对象
  • 通诚无忧-通辽信息港本地化分类信息平台的SEO实战——让通辽用户找到你
  • 2026年评价高的无锡手持式激光除锈机/激光除锈机/手持式激光除锈机源头工厂推荐 - 品牌宣传支持者