java的四种输入方法,你会几种?

java的四种输入方法,你会几种?java的输入方法最常见的就是Scanner的方法,我经过查阅一些资料发现了输入方法原来还有那么多种,可以玩出不少花样,下面是我总结出的四种输入方式,有需要的可以拿去1.Scanner相关的功能Scanner的输入方法是最常见的一种,也是小编在此最推荐的一种,固定格式如下:importjava.util.Scanner;publicclassTestDemo1007_4{publicstaticvoidmain(String[]args){Scanner

大家好,又见面了,我是你们的朋友全栈君。

java的输入方法最常见的就是Scanner的方法,我经过查阅一些资料发现了输入方法原来还有那么多种,可以玩出不少花样,下面是我总结出的四种输入方式,有需要的可以拿去

1.Scanner相关的功能

Scanner的输入方法是最常见的一种,也是小编在此最推荐的一种,固定格式如下:

import java.util.Scanner;
public class TestDemo1007_4 { 
   
    public static void main(String[] args) { 
   
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println(a);
    }
}

而这里的“int a = scanner.nextInt();”表示从键盘输入的是一个整数,但如果想输入字符串就需要下面这样写:

 Scanner scanner = new Scanner(System.in);
 String a = scanner.next();
 System.out.println(a);

这个时候我们想要输入字符串,就可以顺利读出了,这是运行结果:
在这里插入图片描述
但是,如果我们想一次性读取多个字符串,就像这样输入,我们发现了问题:
在这里插入图片描述
输入多个字符串之后,只输出了第一个空格之前的字符,一旦遇到了空格就停止读取了,那么如果在这种情景下,scanner.next()就行不通了,需要用:

 Scanner scanner = new Scanner(System.in);
 String a = scanner.nextLine();
 System.out.println(a);

在这里插入图片描述
这样问题就解决了,可以顺利输出全部字符。

2.System相关的功能

个人认为这种输入方法与上面的方法比起来可能是少了一些存在的必要性,但是存在就一定有合理之处,下面是几种使用方法:

  1. 解释一
 public static void main(String[] args) throws IOException { 
   
        char c;
        System.out.print("Please input a char:");
        c = (char) System.in.read();
        //从标准输入读入u一个字节的信息,并返回一盒字符型变量
        System.out.println("Receive char =" + c);
    }

(值得注意的是:当使用System下的read方法来进行输入时,需要处理一个异常,否则会飘红。)
以上代码可以从键盘中读取一个字符,但是只能读取第一个,不管输入多少,只能读取第一个,输出结果如下图:
在这里插入图片描述

2.解释二
使用这种方法进行输入时,会因为你的键盘输入习惯等问题对结果造成影响,而且,返回值始终为ASCⅡ码(有点头疼!)

 public static void main(String[] args) throws IOException { 
   
        System.out.println("请输入:");
        int i =0;
        while (true){ 
   
                i = System.in.read();
                System.out.println(i);
            }
        }

以上代码的运行情况如下:
在这里插入图片描述
所以就像输出结果说的,我们的空格。回车等操作也会被翻译成ASCⅡ码打印出来。

  • 下面是计算输入了多少个字符的代码;
public static void main(String[] args) throws IOException { 
   
        byte[] b = new byte[5];
        while (true){ 
   
        int len = System.in.read(b);
        System.out.println("读取字节数:" + len);
        for (int i = 0; i < len ; i++) { 
   
            System.out.print(b[i] + "\t");
            //返回的是字节数,由于read的特性,如果输入12加(空格)加(回车)那就是四个字符,
           }
        }
    }

输出结果为:
在这里插入图片描述

3.使用命令行相关设置

说白了就是使用以下语句:

DataInputStream din = new DataInputStream(System.in);

和Scanner的用法差不多,下面是它的具体用法,代码如下:

public static void main4(String[] args){ 
   
        double x = 0, y = 0;
        DataInputStream din = new DataInputStream(System.in);
        try { 
   
            System.out.println("输入x的数值:");
            x = Double.parseDouble(din.readLine());
            System.out.println("输入y的数值:");
            y = Double.parseDouble(din.readLine());
            System.out.println("x的数值:" + x + "; y的数值:" + y);
            System.out.println("x + y = "+ (x+y));
        }catch (Exception e){ 
   
            System.out.println("错误!!");
        }
    }

输出结果如下:
在这里插入图片描述

4.JOptionPane相关功能

这一种输入方法和之前三种输入输出的形式都有所不同,他是会在执行操作的时候,弹出一个弹框,所有的输入输出都需要从弹框中输入显示。

1.显示输入消息框,可以输入数据

String str1 = JOptionPane.showInputDialog(“输入消息框”,“0”);

2.显示出一个弹框
null表示对话框显示在屏幕中间
第二个参数表示要显示的字符结果

JOptionPane.showMessageDialog(null,str1);
JOptionPane.showMessageDialog(null,“a + b =” + c);

一个很简单的代码,用来做加减乘除运算:

    public static void main(String[] args) { 
   
        double a,b;
        String str1 = JOptionPane.showInputDialog("输入a的值","0");
         //由于这个方法输入的格式为字符型,所以我们要转换成整型
        a = Integer.parseInt(str1);
        String str2 = JOptionPane.showInputDialog("输入运算符号","+");
        String str3 = JOptionPane.showInputDialog("输入b的值","0");
        b = Integer.parseInt(str3);
        double c = 0;
        if (str2.equals("+") ){ 
   
            c = a + b;
        }
        if (str2.equals("-")){ 
   
            //或者是str.contains("-")
            c = a - b;
        }
        if (str2.equals("*") ){ 
   
            c = a * b;
        }
        if (str2.equals("/") ){ 
   
            c = a / b;
        }
        JOptionPane.showMessageDialog(null, c);
    }

输出如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这种输入和输出格式很新颖,很快引起了小编的注意,但这种方法也存在他自己的局限性

综上:最建议使用的方法还是Scanner

5.应用

那么我将利用四种输入方法编写一个很简单的程序:
实现三个数排序、最大值、最小值、平均值的计算

(由于只有主函数部分有差异,所以下面是四种主函数的写法,其余的函数在后面有附上)

  • 方法一:Scanner
public static void main(String[] args) throws IOException { 
   
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入三个数:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        int[] order = OrderNum(a,b,c);
        int max = MaxNum(a,b,c);
        int min = MinNum(a,b,c);
        double ave = AveNum(a,b,c);
        System.out.println("最大值为:" + max);
        System.out.println("最小值为:" + min);
        System.out.println("平均值为:" + ave);
        System.out.println("由大到小的顺序为;" + Arrays.toString(order));
    }
  • 方法二:System
 public static void main(String[] args) throws IOException { 
   
        System.out.println("请输入三个数:");
        int a = System.in.read();
        int b = System.in.read();
        int c = System.in.read();
        int[] order = OrderNum(a,b,c);
        int max = MaxNum(a,b,c);
        int min = MinNum(a,b,c);
        double ave = AveNum(a,b,c);
        System.out.println("最大值为:" + (max-48));
        System.out.println("最小值为:" + (min-48));
        System.out.println("平均值为:" + (ave-48));
        System.out.println("由大到小的顺序为;" + Arrays.toString(order));
    }
  • 方法三:命令行
 public static void main(String[] args) throws IOException { 
   
        DataInputStream din = new DataInputStream(System.in);
        System.out.println("请输入三个数:");
        int a = Integer.parseInt(din.readLine());
        int b = Integer.parseInt(din.readLine());
        int c = Integer.parseInt(din.readLine());
        int[] order = OrderNum(a,b,c);
        int max = MaxNum(a,b,c);
        int min = MinNum(a,b,c);
        double ave = AveNum(a,b,c);
        System.out.println("最大值为:" + max);
        System.out.println("最小值为:" + min);
        System.out.println("平均值为:" + ave);
        System.out.println("由大到小的顺序为;" + Arrays.toString(order));
    }
  • 方法四:JOptionPane
 public static void main(String[] args) { 
   
        System.out.println("请在对话框中输入三个数:");
        String str1 = JOptionPane.showInputDialog("输入第一个数的值","0");
        int a = Integer.parseInt(str1);
        String str2 = JOptionPane.showInputDialog("输入第二个数的值","0");
        int b = Integer.parseInt(str2);
        String str3 = JOptionPane.showInputDialog("输入第三个数的值","0");
        int c = Integer.parseInt(str3);

        int[] order = OrderNum(a,b,c);
        int max = MaxNum(a,b,c);
        int min = MinNum(a,b,c);
        double ave = AveNum(a,b,c);
        JOptionPane.showMessageDialog(null, "三个数的最大值为:" + max);
        JOptionPane.showMessageDialog(null, "三个数的最小值为:" + min);
        JOptionPane.showMessageDialog(null, "三个数的平均值为:" + ave);
        JOptionPane.showMessageDialog(null, "三个数由大到小为:" +  Arrays.toString(order));
    }

附:
下面是公用函数部分:

    private static int[] OrderNum(int a, int b, int c) { 
   
        int tmp = 0;
        if (a < b){ 
   
            tmp = a;
            a = b;
            b = tmp;
        }
        if (a < c){ 
   
            tmp = a;
            a = c;
            c = tmp;
        }
        if (b < c){ 
   
            tmp = b;
            b = c;
            c = tmp;
        }
        int[] nums ={ 
   a, b, c};
        return nums;
    }

    private static int MaxNum(int a, int b, int c) { 
   
        int tmp = 0;
        if (a < b){ 
   
            tmp = a;
            a = b;
            b = tmp;
        }
        if (a < c){ 
   
            tmp = a;
            a = c;
            c = tmp;
        }
        if (b < c){ 
   
            tmp = b;
            b = c;
            c = tmp;
        }
        return a;
    }

    private static int MinNum(int a, int b, int c) { 
   
        int tmp = 0;
        if (a < b){ 
   
            tmp = a;
            a = b;
            b = tmp;
        }
        if (a < c){ 
   
            tmp = a;
            a = c;
            c = tmp;
        }
        if (b < c){ 
   
            tmp = b;
            b = c;
            c = tmp;
        }
        return c;
    }

    private static double AveNum(int a, int b, int c) { 
   
        int sum = a + b + c;
        return (double)sum/3;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156204.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2021.5 for mac 激活码(最新序列号破解)

    idea2021.5 for mac 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    112
  • 程序员在外包公司工作怎么样呢_从外包公司出来好找工作吗

    程序员在外包公司工作怎么样呢_从外包公司出来好找工作吗    今天刚刚好是周六,本来是可以好好休息的,计划好要去哪里玩的,但是天有不测风云,突然说银行领导要来检查,今天周末大家必须和平时一样照常上班,天呐!大哭!也无奈,只能照常上班咯,谁让别人是地主呢?我经常看到帖子上说或者论坛上大家在讨论程序员在外包公司工作怎么样?福利待遇好吗?工作累吗?上班时间怎么样?等等总之一堆一堆的,现在下班回家闲来无事,我就来说说在外包公司工作到底怎么样?是一种什么样的感觉?大家想不想听呢?那就让我慢慢道来…  &n

    2022年9月30日
    3
  • Maven压缩插件YUI Compressor使用介绍

    Maven压缩插件YUI Compressor使用介绍简介这篇文章主要介绍了Maven压缩插件YUICompressor使用介绍以及相关的经验技巧,文章约18810字,浏览量165,点赞数5,值得参考!使用这个插件主要有两个作用:减少资源文件体积,提高移动端页面加载速度。对关键的前端代码进行一定的代码混淆,保护知识产权。使用说明:使用YUICompressor压缩JS和CSS。需要Maven2.0及以上工程。默认情…

    2022年7月18日
    35
  • Vue跨域问题终解决「建议收藏」

    Vue跨域问题终解决「建议收藏」config-&gt;index.js-&gt;dev-&gt;proxyTable{}修改proxyTable{}为:proxyTable:{‘/api’:{//虚拟目录target:’http://localhost:8081′,//后台NodeSpringboot项目的请求网址changeOrigin:true,…

    2025年12月14日
    4
  • java Calendar获取当前时间

    java Calendar获取当前时间获取系统当前时间戳 publicstaticvoidmain(String[]args){ Calendarcal=Calendar.getInstance(); intyear=cal.get(Calendar.YEAR); intmonth=cal.get(Calendar.MONTH)+1; intday=cal.get(Calendar….

    2022年6月9日
    68
  • QT3D场景的快速绘制

    QT3D场景的快速绘制    QT3D场景提供了一种快速设置3D场景的一种方式,用户凭借着封装好的实体可以快速的在顶层实体(画布)当中增加各种各样的实体,并且通过3DMax软件构造的OBJ文件与QT3D实现信息交互可以的帮助用户摆脱OpenGL的用代码绘制图形的繁琐。本人在做这方面的工作时也看了很多来自CSDN的文章,但是直接将封装好的3D实体放入画布的例子有点少(是不是大家觉得太简单了?),所以作为一个QT3D建模…

    2022年6月4日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号