文章目录
一 : 控制台读取输入
1.1 读取输入 Scanner
- 要想通 过控制台进行输人,首先需要构造一个
Scanner
对象,并与“ 标准输人流”System.in
关联
Scanner scanner = new Scanner(System.in);
- 读取一整行
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();//读取一行
System.out.println(name);
- 如果读取单个的单词,以空格符作为分割:
Scanner scanner = new Scanner(System.in);
String str = scanner.next(); //输入: ab b c
System.out.println(str);// 输出: ab
String str2 = scanner.next();
System.out.println(str2);// 输出: b
- 要想读取一个整数, 就调用 nextlnt 方法
System.out.print("How old are you? ");
int age = in.nextlntO;
Scanner 类定义在java.util 包中。 当使用的类不是定义在基本java.lang 包中时,一定要使用 import 指示字将相应的包加载进来
1.2 读取密码 Console
- Java SE 6 特别 引入了 Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:
- 为什么报空指针异常???
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password:");
- 为了安全起见,返回的密码存放在一维字符数组中, 而不是字符串中。在对密码进 行处理之后,应该马上用一个填充值覆盖数组元素
1.3 API
java.util.Scanner 5.0
- Scanner (InputStream in)
用给定的输人流创建一个 Scanner 对象。 - String nextLine( )
读取输入的下一行内容。 - String next( )
读取输入的下一个单词(以空格作为分隔符)。 - int nextlnt( )
- double nextDouble( )
读取并转换下一个表示整数或浮点数的字符序列。 - boolean hasNext( )
检测输入中是否还有其他单词。 - boolean hasNextInt( )
- boolean hasNextDouble( )
检测是否还有表示整数或浮点数的下一个字符序列。
java.lang.System 1.0
- static Console console( ) 6
如果有可能进行交互操作, 就通过控制台窗口为交互的用户返回一个 Console 对象, 否则返回 null。对于任何一个通过控制台窗口启动的程序, 都可使用 Console对象。 否则,其可用性将与所使用的系统有关.
java.io.Console 6
- static char[] readPassword(String prompt, Object…args)
- static String readLine(String prompt, Object…args)
显示字符串 prompt 并且读取用户输入,直到输入行结束。args 参数可以用来提供输人 格式。
二 : 文件输入与输出
2.1 输入
- 要想对文件进行读取,就需要一个用 File 对象构造一个 Scanner 对象
Scanner scanner = new Scanner(Paths.get("D:\\CSS\\练习01\\index.html"),"utf-8");
2.2 输出
- 要想写入文件, 就需要构造一个 PrintWriter 对象。在构造器中,只需要提供文件名:
// 如果该文件不存在,则会自动创建
// 会自动覆盖文件中原有的内容
PrintWriter printWriter = new PrintWriter("D:\\CSS\\练习01\\index2.html","utf-8");
2.3 完整的文件读取写入
Scanner scanner = new Scanner(Paths.get("D:\\CSS\\练习01\\index.html"),"utf-8");
PrintWriter printWriter = new PrintWriter("D:\\CSS\\练习01\\index2.html","utf-8");
while (scanner.hasNext()){
//System.out.println(scanner.next());// 一个一个单词度的
//System.out.println(scanner.nextLine()); // 一读一行
//printWriter.write(scanner.nextLine());// 写入文件 没有换行
printWriter.write(scanner.nextLine()+"\r\n");// 写入文件 换行
}
scanner.close();
printWriter.close();
2.4 API
java.util.Scanner 5.0
- Scanner(File f)
构造一个从给定文件读取数据的 Scanner。 - Scanner(String data)
构造一个从给定字符串读取数据的 Scanner。
java.io.PrintWriter 1.1
- PrintWriter(String fileName)
构造一个将数据写入文件的 PrintWriter。文件名由参数指定。
java.nio.file.Paths 7
- static Path get(String pathname)
根据给定的路径名构造一个 Path。
三 :控制流程
3.1 块作用域
- 块(即复合语句)是指由一对大括号括起来的若干条简单的 Java语句。块确定了变量的作 用域。一个块可以嵌套在另一个块中。
- 不能在嵌套的两个块中声明同名的变量.
3.2 do while循环
- 如果希望 循环体至少执行一次, 则应该将检测条件放在最后。使用 do/while 循环语句可以实现这种操 作方式。它的语法格式为:
do statement while {condition);
int num;
do {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入小于10的数字:");
num = scanner.nextInt();
System.out.println(num);
}while (num >= 10 );
3.3 中断控制流程语句
break;
- 用于退出循环语句,直接结束整个循环.
带标签的 break语句
- 用于跳出多重嵌套的循环语句。 有时候,在嵌套很深的循环语句中会发生一些不可预料的事情。此时可能更加希望跳到嵌套 的所有循环语句之外。
- 标签必须放在希望跳出的最外 层循环之前, 并且必须紧跟一个冒号。
第一层:
for(int i =0; i < 10; i++){
System.out.println("第一层:"+i);
第二层:
for (int j = 10; j > 0; j--){
System.out.println("第二层:"+j);
if( j < 5) {
//break ; // 默认跳出第二层的for循环,继续执行第一次的for循环.
break 第二层; // 同上
//break 第一层; // 直接结束第一层for循环,整个循环结束.
}
}
}
continue ;
- 跳出本次循环,继续执行下一次循环.