Java学习日记4——Java输入输出方法总结(控制台界面和图形界面)

Java学习日记4——Java输入输出方法总结

Java编程基础认知:Java学习日记1——基础认知
Java面向对象编程认识:Java学习日记2——面向对象编程认知
Java程序的基本结构认识:Java学习日记3——程序类型与构成认知

控制台界面(文本界面)的输入输出

一、文本界面:使用Scanner类输入
scanner类中的方法:在java.util.Scanner类
nextInt()方法:获取输入整数
nextDouble()方法:获取输入的双精度浮点数
next()方法:获取输入的单词

	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		double b = scanner.nextDouble();
		String c = scanner.next();
	}

二、文本界面:使用system.out输出
使用包:java.io
system.out.print()方法:是Java中的一般输出,不能保留精度格式转化,也不能换行输出
system.out.printf()方法:继承了C的特性,常用于格式转换,但需要注意不是换行输出,只用于精度转换
system.out.println()方法:可以换行输出,不能进行格式转换,与print基本一样
可以测试代码如下:

	public static void main(String[] args)
	{
		System.out.print("这是print的输出");
		System.out.printf("这是printf的输出%.2f",0.52);
		System.out.println("这是println的输出");
		System.out.print("这是print的输出");
		System.out.printf("这是printf的输出%.2f",0.52);
		System.out.println("这是println的输出");
	}

程序运行的输出结果如下:

这是print的输出这是printf的输出0.52这是println的输出
这是print的输出这是printf的输出0.52这是println的输出

三、文本界面使用in输入
使用的包:java.io
方法:System.in.read(),用这个方法获取的输入是输入的字符,需要使用类型强制转换。在读入过程中,可能会出现异常,通常会加入异常检测(后面会详细讲解异常的抛出和捕获)。比较麻烦。

	public static void main(String[] args)
	{
		char n=' ';//初始化定义变量
		try//检测异常 
		{
		n = (char)System.in.read(); //这里使用了输入类型转换,转为char类型
		}
		catch (IOException e) 
		{
			System.out.println("程序执行发生了异常哦!");
		}
		System.out.println("system.in的输入"+n);//输出
		int m = Integer.parseInt(String.valueOf(n));//将char转为string,再转为int
		System.out.println("输入转为数字类型"+m);//将输入转为数字类型
	}

值得注意的是:
read()方法读取的是一个字符,并非是直接的输入,如果你输入12,那么只会得到1,而没有2。需要配合数据类型转换使用,如果你想获取输入数字,那么需要将输入的字符转换为数字类型才可以。否则得不到相应的数据。例如:

	public static void main(String[] args)
	{
		int n=0;//初始化定义变量
		try//检测异常 
		{
		n = (int)System.in.read(); //这里使用了输入类型转换,转为int类型
		}
		catch (IOException e) 
		{
			System.out.println("程序执行发生了异常哦!");
		}
		System.out.println("system.in的输入"+n);//输出
	}

运行结果是:

5//输入数字5
system.in的输入53//输出的是数字5的ASCII编码53

综合而言,这种输入方式,比较繁琐,而且涉及到很多种数据类型的转换,一般如果只是获取输入的数据或者字符,不使用这种方式。

四、文本界面:readLine流输入
使用的类:BufferedReader ;相比于in的方式,可以直接读取一行组合成字符串,而不再是单个字符

	public static void main(String[] args)
	{
		String s = null;
		try//检测异常 
		{
		BufferedReader B_input = new BufferedReader(new InputStreamReader(System.in));
		s = B_input.readLine(); //读取一行数据(不敲回车的完整行)
		}
		catch (IOException e) 
		{
			System.out.println("程序执行发生了异常哦!");
		}//捕获IO异常
		System.out.println("system.in的输入"+s);//输出
		int n = Integer.parseInt(s);//转换为数字
		System.out.println("system.in的输入转int的输出"+n);//输出
		double m = Double.parseDouble(s);//转换为双精度浮点
		System.out.println("system.in的输入转double的输出"+m);//输出
	}

运行结果是:

扫描二维码关注公众号,回复: 11510442 查看本文章
1546//输入
system.in的输入1546
system.in的输入转int的输出1546
system.in的输入转double的输出1546.0

图形界面的输入输出

 常用的类:JFrame,在swing包里面
 数据输入:图形中,通常使用文本框(TextField),在图形界面中来实现输入;
 图形输出:然后使用标签对象(Label)或者文本框(TextField)来实现输出;
 命令执行:利用按钮(Button)来执行命令。

 首先需要创建Frame用户界面,通常需要用到的方法有:
 add():加入对象
 Button.addActionListener():添加事件监听器,必须要实现的功能是actionPerformed(),也就是必要的功能代码书写在响应函数里面。
 不好解释,还是直接上代码和注释:

//相应类库的引入
import java.awt.*;
import java.awt.enevt.*;
import javax.swing.*;
//建立主类,程序入口
public class in_out_test
{
	public static void main(String args[])
	{
		new testframe();//调用类
	}
}
//建立类testframe,父类是Jframe
class testframe extends JFrame
{
	JTextField a = new JTextField(10);//文本框a
	JTextField b = new JTextField(10);//文本框b
	JButton compute  = new JButton("计算和");//按钮
	JLabel out = new Label("计算结果:");//输出标签
	public testframe()
	{
		setLayout(new FlowLayout());//设置流式显示界面
		//添加显示控件
		getContentPane().add(a);
		getContentPane().add(b);
		getContentPane().add(compute);
		getContentPane().add(out);
		//给按钮添加监听响应
		compute.addActionListener(new computeAction());
		//设置显示界面大小
		setSize(400,200);
		//设置界面的关闭按键,例如win10右上角的×按钮
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setVisible(true);
	}
	//定义按钮响应类
	class computeAction implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
		//响应类执行的内容,也是按钮的核心算法实现
			String aa = a.getText();
			String bb = b.getText();
			double aaa = Double.parseDouble(aa);
			double bbb = Double.parseDouble(bb);
			c = aaa+bbb;
			//将计算结果输出
			out.setText(aa"+"bb+"的和是:"+c);
		}
	}
}

其执行结果为:
程序运行演示

猜你喜欢

转载自blog.csdn.net/weixin_44005494/article/details/107608730