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


相关推荐

  • docker搭建kafka集群[通俗易懂]

    docker搭建kafka集群[通俗易懂]docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

    2022年4月25日
    39
  • ubuntu强制修改密码_debian修改密码命令

    ubuntu强制修改密码_debian修改密码命令年底需要修改一次密码,修改的时候遇到了问题,无法修改密码,经过baidu、google,找到了可能引起的原因,成功修改密码。以下内容来自于网络。Authenticationtokenmanipulationerror发生该错误原因是:1、分区没有空间导致。2、/etc/passwd和/etc/shadow不同步但是这次上面两条却行不通,通过df查看根分区还有40%剩余。1、尝试修改密码,出…

    2025年8月29日
    5
  • JodaTime时间处理工具使用详解

    JodaTime时间处理工具使用详解工作中经常用到java日期类型Date、Calendar或SimpleDateFormat,但是这些日期工具类要么提供了过期的方法(Date),要么就是功能不够强大。最近突然用到了Joda-Time日期工具,发现非常好用,就撰写此文,以便学习和交流。

    2022年6月17日
    28
  • java闰年_java 判断闰年

    java闰年_java 判断闰年题目:在l.jsp中,设置一个表单,可以输入年份,提交到另外一个action进行计算,如果算出来是闰年,那么就跳转到a1.jsp(显示闰年),如果是平年就跳转到a2.jsp(显示平年)。要求:需要把计算是否闰年的算法,封装到一个工具类Year中isLeap方法中。第一步:创建1.jsp页面,并跳到action.jsp请输入年份:如下图:第二步:封装year工具类创建一个class类,取名year…

    2022年7月17日
    16
  • asynctask使用_androidstudiohelloworld教程

    asynctask使用_androidstudiohelloworld教程Android AsyncTask 详解

    2022年4月20日
    42
  • 2020十大正规现货交易平台排行榜

    2020十大正规现货交易平台排行榜对国内投资者而言,贵金属投资有内、外盘之分,因此者在选择平台,投资者应该从市场成熟度和产品优势出发,先明确自己在哪一个市场进行投资,再挑选那些信誉度极高、以客户利益为大前提、在行业内排名较前平台。其中,上海黄金交易所(SGE)属于国家级的交易场所,也是目前国内唯一能够同时兼营黄金和白银现货产品的交易所。如果投资者想通过排名靠前的平台参与上金所的产品,可以在国内的四大商业银行中作出选择。至于外盘产品方面,我们建议投资者选择香港排名靠前的平台。因为香港的正规平台都持有金银业贸易场(CGSE)颁发的牌照,而只

    2022年6月23日
    64

发表回复

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

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