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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • activiti工作流开发_flowable工作流

    activiti工作流开发_flowable工作流深入理解Activiti工作流Activiti作为一个流行的开源工作流引擎,正在不断发展,其6.0版本以API形式提供服务,而之前版本基本都是要求我们的应用以JDK方式与其交互,只能将其携带到我们的应用中,而API方式则可以服务器独立运行方式,能够形成一个专网内工作流引擎资源共享的方式。Activiti执行的BPMN2.0,这个规范中有几个要素见下图:其实最经常使用的是开始结束事件和任务,本文就以…

    2022年10月6日
  • does have any_has many

    does have any_has many使用京东云OSS的外链访问(自己程序拼的外链,并非是OSS服务器上给定的外链).访问报如下错误ThisXMLfiledoesnotappeartohaveanystyleinformationassociatedwithit.Thedocumenttreeisshownbelow.<Error> <statusCode>403</statusCode> <Code>AccessDenied</Code&g

    2022年9月18日
  • 迭代器Python_python迭代器使用

    迭代器Python_python迭代器使用迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。可迭代对象我们已经知道可以对l

    2022年7月31日
  • logback配置详解maxhistory(logback配置discrim)

    目录1、根节点包含的属性2、根节点的子节点 2.1、设置上下文名称: 2.2、设置loger、root 正文回到顶部1、根节点&lt;configuration&gt;包含的属性scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生…

    2022年4月11日
  • Vue里如何实现excel转json的功能「建议收藏」

    Vue里如何实现excel转json的功能「建议收藏」前言:因为做微信小程序云开发,在云开发导入数据需要json格式的,然鹅我们市场部的小姐姐给我的文档是excel文件,导致我需要去手动录入,后来在网上搜了下。有通过复制excel文件内容粘贴后生成的:http://www.jsonla.com/excel2json/有通过上传excel文件后生成的json文件下载却需要付费的:http://www.yzcopen.com/doc/exceljson搞得那么难受不如自己写一个,效果图如下:使用地址:https://test-mars.qtshe.c

    2022年5月21日
  • CGLib简单入门

    CGLib简单入门一、CGlib简介        CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 当然这些实际的功能是asm所提供的,asm又是什么?Java字节码操控框架,具体是什么大家可以上网查一查,毕竟我们这里所要讨论的是cglib。cglib就是封装了asm,简化了asm的操作,实现了在运行期动态生成新的class。 可能大家还感觉不到它的

    2022年5月5日

发表回复

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

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