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

article/2025/11/11 15:40:39

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://cloud.tencent.com/developer/support-plan?invite_code=1yqgrvpm3ge84


http://chatgpt.dhexx.cn/article/HOUMqbtT.shtml

相关文章

zzlatex制作复杂表格(跨行、跨列)

用Latex制作复杂表格&#xff0c; 需要用到\multirow宏包&#xff0c; 用\multicolumn, \multirow, \hline, \cline 四种命令来控制跨列&#xff0c;跨行&#xff0c; 横线&#xff0c; 竖线位置。 原帖请见&#xff1a; http://jhengjyun.blogspot.jp/2011/01/latexmulticolu…

HTML--table--跨行跨列

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>跨行跨列</title><style type"text/css">table{border: 1px solid;width: 500px;}table td,th{border: 0.0625rem solid;text-align: c…

HTML表格标签跨行与跨列

关于行和列我们换个称呼&#xff1a;横与竖来形容&#xff0c;而<tr></tr>就是横&#xff0c;<th></th>和<td></td>代表的就是竖。rowspan的属性放置td标签中就是与下一横中td合并&#xff08;上下合并&#xff09;&#xff0c;此时要删除…

IDEA通过正则跨行搜索

idea快捷键&#xff1a;ctrlF (?is)key1.*?key2 如果想搜索同时包含key1和key2的关键词&#xff0c;同时&#xff0c;允许跨行&#xff0c;则可以这样搜索 如果没有加(?is)则是单行搜索

latex跨行跨列表格

使用revtex模板的跨行跨列表格时候不需要使用\usepackage{booktabs},否则midrule&#xff0c;toprule这些线条不能够正常显示。因此需要使用自带的线条。 下面记录一下我试用过的跨行跨列表格latex语法 \begin{table}[hb]\centering\caption{ \label{cutoff} nothing }\begin{…

Latex 跨行跨列表格

使用Latex进行论文写作时&#xff0c;常常需要制作跨行、跨列的表格。但是要制作一个美观的表格&#xff0c;还是有一点复杂的&#xff0c;这里列出一个绘制基本三线表的方法&#xff0c;以及需要注意的地方。更加复杂的表格可以此为模板修改内容。 效果&#xff1a; Latex代…

PHP数据跨行跨列处理

PS PHP数据跨行跨列处理&#xff0c;表格展示&#xff0c;Excel导出。后台是Dcat Admin,导出是"maatwebsite/excel": “^3.1” Excel效果 后台页面效果 示例代码 数据调用 可以放在Dcat对应Controller的数据仓库里面。 public function get(Grid\Model $model){// 返…

【干货】html表格的跨行合并与跨列合并

在HTML中经常会用到表格&#xff0c;但由于我们想要的表格总是需要不规则的。而表格的合并常常会经常用到&#xff0c;今天我们来看一下表格的合并。 首先我们要了解一下合并的步骤 先确认是跨行合并还是跨列合并根据单元格先上后下&#xff0c;先左后右来进行合并如果要合并…

HTML跨行跨列

colspan 属性规定单元格可横跨的列数<table border"1"><tr><th>姓名</th><th>性别</th></tr><tr><td colspan"2">籍贯</td></tr> </table> 效果图 rowspan 属性规定单元格可横跨…

表格的跨行与跨列

表格的跨行与跨列&#xff08;课表示例&#xff09; colspan 属性&#xff1a;用来规定表格单元格可横跨的列数。rowspan 属性&#xff1a;用来规定表格单元格可横跨的行数。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-…

【HTML】HTML 表格 ③ ( 合并单元格 | 跨行合并 | 跨列合并 | 单元格合并顺序 | 跨行设置 rowspan 属性 | 跨列设置 colspan 属性 )

文章目录 一、合并单元格1、合并单元格方式2、合并单元格顺序3、合并单元格流程 二、合并单元格示例1、原始表格2、跨行合并单元格3、跨列合并单元格 一、合并单元格 1、合并单元格方式 单元格合并方式 : 跨行合并 : 垂直方向上的 上下 单元格合并 是 跨行合并 , 在 <td>…

element+vue实现表格跨行

在项目开发中表格的使用还是很频繁的&#xff0c;而其中难免会涉及到表格的跨行跨列行为。这是一次记使用element-ui的table组件加vue实现的表格跨行跨列实践。 首先是查看element的table组件的api&#xff1a; <template><div><el-table:data"tableData6&…

【Excel】跨行排序

今天分享Excel的小技巧&#xff1a;如何进行跨行排序。 原数据如下&#xff1a; 序号房产面积3号101室87.573号101室小计3号105室77.213号105室小计3号204室90.763号204室小计3号205室77.473号205室小计3号206室98.253号206室小计...... 用Excel进行排序&#xff0c;但不包含小…

HTML 表格跨行与跨列

<table border"1px" width"300px" cellspacing"0" cellpadding"0" bgcolor"red" ><!--border 边框 参数都打引号 cellspacing单元格间距--><tr><td align"left">姓名</td><td…

【HTML】表格的跨行跨列

表格的跨行跨列 第一行第一列的单元格要跨两列&#xff0c;利用colspan属性来实现跨列 <table align"center" border"1" width"200" height"200" cellspacing"0"><tr><th colspan"2">1.1</…

table同时实现跨行跨列

table同时实现跨行跨列的效果&#xff1a; HTML代码如下&#xff1a; <div id"app"><table cellpadding"0" cellspacing"0" class"ptable detail_new_dialg_table"><tr class"dialg_table_th"><th …

03_HTML表格的跨列跨行(colspan属性设置跨列、rowspan属性设置换行)

目录 1.colspan属性&#xff08;跨列&#xff09;2.rowspan属性&#xff08;跨行&#xff09;3.综合练习 1.colspan属性&#xff08;跨列&#xff09; 示例 <table width"500" height"500" cellspacing"0" border"1"><tr>…

HTML 表格跨行跨列

HTML和CSS第一天 8.8跨行跨列表格&#xff08;次重点&#xff0c;必须掌握&#xff09;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>9-表格的跨行跨列</title> </head> <body> &…

HTML表格跨行、跨列操作(rowspan、colspan)

一般使用<td>元素的colspan属性来实现单元格跨列操作&#xff0c;使用<td>元素的rowspan属性来实现单元格的跨行操作。 colspan属性规定单元格可横跨的列数&#xff0c;所有浏览器都支持colspan属性。其取值为number&#xff0c;如下图所示&#xff1a; 例如&#…

跨行转账汇款处理流程

一.跨行转账汇款业务介绍 有了大小额系统和超级网银&#xff0c;银行的跨行业务就有意思了。银行对不同的客群和不同的场景&#xff0c;做了不同的渠道。我们最经常接触的大概就是银行柜台、手机网银、POS机和ATM机。出于各种商业目的&#xff0c;不同渠道的业务采用不同的清算…