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);//输出
}
运行结果是:
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);
}
}
}