从零彻底学会java输入输出以及方法

 更新时间:2026年06月08日 09:23:10   作者:code斗  
在Java编程中控制台输入输出是基础中的基础,这篇文章主要介绍了java输入输出以及方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一.java的输出

1.1 输出到控制台

int x = 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 读取字符串/整数/浮点数,需要先导⼊该类(后面会详细学习导入):

Scanner scan = new Scanner(System.in);

System.out.println("请输入你的名字");
String name = scan.nextLine();

System.out.println("请输入你的年龄");
int age = scan.nextInt();

System.out.println("请输入你的工资");
double salary = scan.nextDouble();

scan.close(); // 注意:使用完成后要调用关闭方法

2.1.2 注意事项

1. 输入顺序问题

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

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

正常运行结果

不正常运行结果

2. Scanner 关闭

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

3. 数据类型匹配

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

4. 解决换行问题的方法

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

Scanner scan = new Scanner(System.in);

System.out.println("请输入你的年龄");
int age = scan.nextInt();
scan.nextLine(); // 消耗掉换行符

System.out.println("请输入你的名字");
String name = scan.nextLine();

scan.close();

2.2从键盘多组输入

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

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

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

三.Java中的方法

3.1方法的定义

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

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

3.2方法的示例

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

public class Test {
    public static boolean isLeapYear(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        //实现⼀个函数,检测⼀个年份是否为闰年
        Scanner Scan = new Scanner(System.in);
        int year = Scan.nextInt();
        System.out.println(isLeapYear(year));
    }
}

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

public class TEST {
    public static int add(int x,int y){
        return x+y;
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        System.out.println(add(x, y));
    }
}

3.3使用方法的注意事项

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

3.4方法的调用

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

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

    public static int fac(int x){
        int ret = 1;
        for(int i=1;i<=x;i++){
            ret*=i;
        }
        return ret;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int x = scan.nextInt();
            System.out.println(fac(x));
        }
    }

注意

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

3.5方法的重载

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

  • 原方法
public static int addInt(int x, int y) {
 return x + y;
 }
 public static double addDouble(double x, double y) {
 return x + y;
 }
  • 重载方法
public static int add(int x, int y) {
 return x + y;
 }
 public static double add(double x, double y) {
 return x + y;
 }
 public static double add(double x, double y, double z) {
 return x + 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的阶乘
public static int fac(int x){
    if(x==1){
        return 1;
    }else{
        return x*fac(x-1);
    }
}

    public static void main(String[] args) {
        System.out.println(fac(5));
    }

调用过程

总结

到此这篇关于java输入输出以及方法的文章就介绍到这了,更多相关java输入输出及方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 介绍Jersey-Jersey入门基础

    介绍Jersey-Jersey入门基础

    REST不是一种新的技术,而仅仅是一个理论,实践这样的理论可以让我们的应用更加先进。
    2013-02-02
  • 最值得Java开发者收藏的网站

    最值得Java开发者收藏的网站

    这篇文章主要为大家分享了最值得Java开发者收藏的11个网站,帮助Java开发者提升编程能力
    2016-11-11
  • java取出list中某几个属性组成一个新集合的几种方式

    java取出list中某几个属性组成一个新集合的几种方式

    在Java开发中经常需要对List中的对象进行一些操作,例如对某个字段进行过滤、排序等,这篇文章主要给大家介绍了关于java取出list中某几个属性组成一个新集合的几种方式,需要的朋友可以参考下
    2024-03-03
  • 如何解决@SpringBootApplication报错问题

    如何解决@SpringBootApplication报错问题

    这篇文章主要介绍了如何解决@SpringBootApplication报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 2020最新eclipse安装过程及细节

    2020最新eclipse安装过程及细节

    这篇文章主要介绍了2020最新eclipse安装过程及细节,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java Spring登录练习详解

    Java Spring登录练习详解

    这篇文章主要介绍了Java编程实现spring简单登录的练习,具有一定参考价值,需要的朋友可以了解下,希望能够给你带来帮助
    2021-10-10
  • 如何解决java.net.BindException:地址已在使用问题

    如何解决java.net.BindException:地址已在使用问题

    当Zookeeper启动报错“java.net.BindException:地址已在使用”时,通常是因为指定的端口已被其他进程占用,解决这个问题需要按照以下步骤操作:首先,使用命令如lsof -i:2181找到占用该端口的进程号;其次,使用kill命令终止该进程
    2024-09-09
  • 关于Java父类没有无参构造方法子类处理方法

    关于Java父类没有无参构造方法子类处理方法

    父类无参构造方法,子类不写,其实会默认调用父类的无参构造方法也就是用super(),编译运行后,会打印出"子类会调用Father的第一个构造方法,这篇文章给大家介绍关于Java父类没有无参构造方法子类处理方法,感兴趣的朋友一起看看吧
    2024-01-01
  • Java数组常用排序算法实例小结

    Java数组常用排序算法实例小结

    这篇文章主要介绍了Java数组常用排序算法,结合实例形式总结分析了java数组常用的4种排序算法,包括冒泡排序、数组递增排序、快速排序及选择排序,需要的朋友可以参考下
    2017-12-12
  • Druid关闭监控页面关闭不了的问题及解决

    Druid关闭监控页面关闭不了的问题及解决

    这篇文章主要介绍了Druid关闭监控页面关闭不了的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论