字符的输入:
简单实例:
import java.io.*;//一个java导入
class Test {
public static void main(String args[]) throws IOException {
char c=(char)System.in.read();
System.out.println(c);
}
}
C:\Users\86183\java>java Test
d
d
System.in.read()方法定义声明有IOEcpection异常,在main方法内没有处理异常,所以在main方法头增加 throws IOExpection子句
Import java.io.*
字符串的输入
简单实例:
import java.io.*;
class Test {
public static void main(String args[]) throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter a string:");
String s=in.readLine();
System.out.printf("The string you've entered is:\n"+s);
}
}
C:\Users\86183\java>java Test
Please enter a string:
liminglu
The string you've entered is:
liminglu
由于从键盘输入的字符串在键盘缓冲区是字节流数据,要按字符序列来识别数据需要使用的是java的InputStreamReader进行转换,在此基础上,进一步用BufferedReader流对数据过滤,借助BufferedReader流对象提供的readLine()方法从键盘读取一行字符
整数和双精度数的输入
简单实例:
import java.io.*;
class Test {
public static void main(String args[]) throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter two numbers(int/double):");
String s=in.readLine();
int m=Integer.parseInt(s);
s=in.readLine();//此处重新声明一个String类型的a,然后下一句的参数改成a也可以!
double n=Double.parseDouble(s);
System.out.printf((m+1)+" "+n);
}
}
C:\Users\86183\java>java Test
Please enter two numbers(int/double):
25
60
26 60.0
在Java程序设计中还需输入数值数据如整数和实数。这类数据必须通过获取一个数字字符组成的字符串,然后通过下方的转换方法转换成需要的数据,也就是说其他类型的数据输入必须通过字符串输入方法得到数据,在通过基本的数据类型包装类提供的方法将字符串转化为相应类型的数据。
Integer.paresInt(String):将数字字符串转化为整数
Double.paresDouble(String):将字符串形式的数字数据转化为双精度数
使用java.util.Scanner类
Scanner是一个类,一个文本扫描器,使用分隔符可以分解它的输入,而这个分隔符默认情况下是空格Scanner的输入源取决于构造参数,此为从标准输入(键盘)获取数据:
Scanner scanner=new Scanner(System.in);
读取用户在命令行输入的各种数据类型,有以下几种方法
- boolean hasNext():判断是否还有下一个字符
- int nextInt():读取整数
- long nextLong():读取长整数
- double nextDouble():读取双精度数
- String nextLine():读取一行字符串
- scanner.next():读取对象scanner里的内容,遇到分隔符就停下。
字符的输入
简单实例:
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");
// s.useDelimiter(" |,|\\.");
while (s.hasNext()) {
System.out.println(s.next());
}
}
}
C:\Users\86183\java>java Test
123
asdf
sd
45
789
sdf
asdfl,sdf.sdfl,asdf
......asdfkl
las
C:\Users\86183\java>
打开注释就是表明分隔符更改为空格,逗号,和点
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");
s.useDelimiter(" |,|\\.");
while (s.hasNext()) {
System.out.println(s.next());
}
}
}
C:\Users\86183\java>java Test
123
asdf
sd
45
789
sdf
asdfl
sdf
sdfl
asdf
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");
System.out.println(s.nextLine());
}
}
asdfkl
las
C:\Users\86183\java>
next()与nextLine()的区别:next()读取数据的时候遇到分隔符会停止,而nextLine()会全部读取下来
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");
System.out.println(s.next());
}
}
C:\Users\86183\java>java Test
123
C:\Users\86183\java>
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");
System.out.println(s.nextLine());
}
}
C:\Users\86183\java>java Test
123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las
C:\Users\86183\java>
至于说更改分隔符所遇到到uesDelimiter();括号内应该是正则表达式
数值输入
import java.util.Scanner;
class Test{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("Please enter three numbers:");
int a=s.nextInt();
int b=s.nextInt();
int c=s.nextInt();
int m=(a>b)?a:b;
m=(m>c)?m:c;
System.out.println("The max is"+m);
}
}
三次enter键输入:
C:\Users\86183\java>java Test
Please enter three numbers:
123
456
789
The max is789
C:\Users\86183\java>
用空格分隔:
C:\Users\86183\java>java Test
Please enter three numbers:
123 456 789
The max is789
C:\Users\86183\java>
用非nextLine()的方法扫描输入的数据,就像一个扫描指针,遇到分隔符,停止扫描,然后再一次用next()类似的方法的时候,扫描指针跳过刚才遇到的分隔符,然后前进道新的数据上继续扫描,知道遇到分隔符会数据结尾扫描结束
使用java.io.Console类
通过System类的console()方法可以得到Console类的对象
例如:
Console con=System.Console();
Console对象提供吐下方法实现在DOS控制台与用户进行交互
readLine(String hint):读一行信息,起这种参数为提示输入的字符串(仅仅是个提示作用)
char[] readPassword(String hint):读用户输入的密码,其中参数为提示输入的字符串,该方法执行时将隐藏用户输入的文本,方法返回结果是字符数组。
printf(String fmt,Object…args):按指定格式字符串描述输出后面采纳数的内容,第二个参数为变长参数,它可以对应若干个实参
format(String fmt,Object…args):同上
import java.io.Console;
class Test{
public static void main(String[] args){
Console con=System.console();//获得Console实例对象
if(con!=null){//判断时候有控制台的使用权
String user=con.readLine("Enter username:");
String pwd=new String(con.readPassword("Enter password:"));
con.format("Username is:%s\n",user);
con.printf("Password is:"+pwd+"\n");
}
}
}
C:\Users\86183\java>java Test
Enter username:lml
Enter password:
Username is:lml
Password is:114477
用Swing对话框实现输入/输出
1.数据输入:
可用javax.swing.JOptionPane类的showInputdialog方法从输入对话框获得字符串。该方法最简单的一种格式为:
static String showInputDiolog(Object message) 其中,参数message为代表输入提示信息的对象
2.数据输出
javax.swing.JOptionPane类的showMessageDialog方法将弹出消息显示对话框,可用来显示输出结果,该方法最简单的一种格式为:
static void showMessageDialog(Component parentComponent,Object message)
其中,参数parentComponent代表该对话框的父窗体部件,如果存在,则对话框显示在窗体的中央,如果值为null,则对话框在屏幕中央显示;参数message为显示的内容
import javax.swing. *;
class Test{
public static void main(String[] args){
String s=JOptionPane.showInputDialog("请输入你的姓名:");
JOptionPane.showMessageDialog(null,"南林大欢迎你:"+s);
}
}
博主是个java小白,java输入方法还有待日后的逐步完善