Java基础-009-Java输入输出
读取输入
前面已经看到, 打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要调用 System.out.println 即可。然而,读取“ 标准输人流” System.in 就没有那么简单了。要想通过控制台进行输人,首先需要构造一个 Scanner 对象,并与“ 标准输人流” System.in 关联。java.util.Scanner 是 Java5 的新特征。
Scanner in = new Scanner(System.in);
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("What is your name? ");
String name = in.nextLine() ;
System.out.print("How old are you? ");
int age = in.nextInt();
System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
}
}
API: java.util.Scanner 5.0
- Scanner (InputStream in)
用给定的输人流创建一个 Scanner 对象。 - String nextLine( )
读取输入的下一行内容。 - String next( )
读取输入的下一个单词(以空格作为分隔符)。 - int nextlnt( )
- double nextDouble( )
读取并转换下一个表示整数或浮点数的字符序列。 - boolean hasNext( )
检测输人中是否还有其他单词。 - boolean hasNextInt( )
- boolean hasNextDouble( )
检测是否还有表示整数或浮点数的下一个字符序列。
Console
因为输入是可见的, 所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别
引入了 Console 类实现这个目的。
public class Main {
public static void main(String[] args) {
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("PassWord: ");
System.out.println("User name: " + username);
System.out.println("PassWord: " + String.valueOf(passwd));
}
}
Java.io.Console 只能用在标准输入、输出流未被重定向的原始控制台中使用,在 Eclipse 或者其他 IDE 的控制台是用不了的。
格式化输出
System.out.print
System.out.println
System.out.printf
System.out.printf
Java SE 5.0 沿用了 C 语言库函数中的 printf 方法。
public static void main(String[] args) {
double x = 10000.0 / 3.0;
System.out.println(x);
System.out.printf("%10.2f",x);
}
格式说明符的语法图
String.format
可以使用静态的 String.format 方法创建一个格式化的字符串, 而不打印输出:
String message = String.format("Hello, %s. Next year , you'll be %d", name, age) ;
System.out.print
常用System.out.print\System.out.println默认转换为字符串输出
文件输入与输出
Scanner in = new Scanner(Paths.get(“myfile.txt”), “UTF-8”);
PrintWriter out = new PrintWriter(“myfile.txt”, “UTF-8”);
public static void main(String[] args) {
String name = "";
int age = -1;
try {
Scanner in = new Scanner(Paths.get("myfile.txt"), "UTF-8");
int rows = 1;
while (in.hasNextLine()) {
if ((rows % 2) == 1) {
name = in.nextLine();
System.out.println("What is your name? " + name);
} else if ((rows % 2) == 0) {
age = in.nextInt();
System.out.println("How old are you? " + age);
}
rows++;
}
in.close();
PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");
out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
out.close();
} catch (Exception e) {
System.out.println("myflle.txt 读写异常");
}
}