Java 控制台輸入流 System.in和Scanner System.out 是常用的在控制台輸出數據的 System.in 可以從控制台輸入數據 步驟 1 : System.in package stream; import java.io.IOException; import java.i ...
Java 控制台輸入流 System.in和Scanner
System.out 是常用的在控制台輸出數據的
System.in 可以從控制台輸入數據
步驟 1 : System.in
package stream;
import java.io.IOException;
import java.io.InputStream;
public class TestStream {
public static void main(String[] args) {
// 控制台輸入
try (InputStream is = System.in;) {
while (true) {
// 敲入a,然後敲回車可以看到
// 97 13 10
// 97是a的ASCII碼
// 13 10分別對應回車換行
int i = is.read();
System.out.println(i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
步驟 2 : Scanner讀取字元串
使用System.in.read雖然可以讀取數據,但是很不方便
使用Scanner就可以逐行讀取了
package stream;
import java.util.Scanner;
public class TestStream {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
while(true){
String line = s.nextLine();
System.out.println(line);
}
}
}
步驟 3 : Scanner從控制台讀取整數
使用Scanner從控制台讀取整數
package stream;
import java.util.Scanner;
public class TestStream {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
System.out.println("第一個整數:"+a);
int b = s.nextInt();
System.out.println("第二個整數:"+b);
}
}
練習: 自動創建類
自動創建有一個屬性的類文件。
通過控制台,獲取類名,屬性名稱,屬性類型,根據一個模板文件,自動創建這個類文件,並且為屬性提供setter和getter
public class @class@ {
public @type@ @property@;
public @class@() {
}
public void set@Uproperty@(@type@ @property@){
this.@property@ = @property@;
}
public @type@ get@Uproperty@(){
return this.@property@;
}
}
答案:
package stream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class TestStream {
public static void main(String[] args) {
// 接受客戶輸入
Scanner s = new Scanner(System.in);
System.out.println("請輸入類的名稱:");
String className = s.nextLine();
System.out.println("請輸入屬性的類型:");
String type = s.nextLine();
System.out.println("請輸入屬性的名稱:");
String property = s.nextLine();
String Uproperty = toUpperFirstLetter(property);
// 讀取模版文件
File modelFile = new File("E:\\project\\j2se\\src\\Model.txt");
String modelContent = null;
try (FileReader fr = new FileReader(modelFile)) {
char cs[] = new char[(int) modelFile.length()];
fr.read(cs);
modelContent = new String(cs);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//替換
String fileContent = modelContent.replaceAll("@class@", className);
fileContent = fileContent.replaceAll("@type@", type);
fileContent = fileContent.replaceAll("@property@", property);
fileContent = fileContent.replaceAll("@Uproperty@", Uproperty);
String fileName = className+".java";
//替換後的內容
System.out.println("替換後的內容:");
System.out.println(fileContent);
File file = new File("E:\\project\\j2se\\src",fileName);
try(FileWriter fw =new FileWriter(file);){
fw.write(fileContent);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件保存在:" + file.getAbsolutePath());
}
public static String toUpperFirstLetter(String str){
char upperCaseFirst =Character.toUpperCase(str.charAt(0));
String rest = str.substring(1);
return upperCaseFirst + rest;
}
}