前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java的四种输入方法,你会几种?

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

作者头像
小雨的分享社区
发布2022-10-26 15:52:47
7740
发布2022-10-26 15:52:47
举报
文章被收录于专栏:小雨的CSDN小雨的CSDN

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

1.Scanner相关的功能

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

代码语言:javascript
复制
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();"表示从键盘输入的是一个整数,但如果想输入字符串就需要下面这样写:

代码语言:javascript
复制
 Scanner scanner = new Scanner(System.in);
 String a = scanner.next();
 System.out.println(a);

这个时候我们想要输入字符串,就可以顺利读出了,这是运行结果:

在这里插入图片描述
在这里插入图片描述

但是,如果我们想一次性读取多个字符串,就像这样输入,我们发现了问题:

在这里插入图片描述
在这里插入图片描述

输入多个字符串之后,只输出了第一个空格之前的字符,一旦遇到了空格就停止读取了,那么如果在这种情景下,scanner.next()就行不通了,需要用:

代码语言:javascript
复制
 Scanner scanner = new Scanner(System.in);
 String a = scanner.nextLine();
 System.out.println(a);
在这里插入图片描述
在这里插入图片描述

这样问题就解决了,可以顺利输出全部字符。

2.System相关的功能

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

  1. 解释一
代码语言:javascript
复制
 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Ⅱ码(有点头疼!)

代码语言:javascript
复制
 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Ⅱ码打印出来。

  • 下面是计算输入了多少个字符的代码;
代码语言:javascript
复制
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的用法差不多,下面是它的具体用法,代码如下:

代码语言:javascript
复制
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);

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

代码语言:javascript
复制
    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
代码语言:javascript
复制
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
代码语言:javascript
复制
 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));
    }
  • 方法三:命令行
代码语言:javascript
复制
 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
代码语言:javascript
复制
 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));
    }

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

代码语言:javascript
复制
    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://cloud.tencent.com/developer/support-plan?invite_code=1yqgrvpm3ge84

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Scanner相关的功能
  • 2.System相关的功能
  • 3.使用命令行相关设置
  • 4.JOptionPane相关功能
  • 5.应用
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档