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; }
}

最新文章

  1. 【吐槽】VS2012的安装项目只能用InstallShield Limited Edition
  2. android开发学习---layout布局、显示单位和如何进行单元测试
  3. hibernate数据库连接池
  4. MS Sqlserver 备份数据库SQL
  5. springmvc 获取request 和 java路径分隔符 在windows 和linux 下自动判断的方法
  6. Jenkins的详细安装及使用--windows
  7. nginx+uWSGI+django+virtualenv+supervisor发布web服务器
  8. Excel 常用属性的一小部分
  9. MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法
  10. java8的Streams
  11. java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
  12. Python 获取计算机全名(fully qualified host name)
  13. POJ 2408 - Anagram Groups - [字典树]
  14. Java高级工程师面试题总结及参考答案
  15. html-day04
  16. go get golang.org/x/net 安装失败的解决方法!
  17. Flask:操作SQLite3(0.1)
  18. [ 转载 ] Java Jvm内存介绍
  19. 关于Map集合的遍历总结
  20. SVN认证失败的错误分析

热门文章

  1. sqlserver 问题来了,视图不会自动更新,如果是用*创建的
  2. sqlmap的浅研究
  3. 030.[转] sql事务特性
  4. show()和隐藏hide() slideDown()和 slideUp() fadeIn()和fadeOut()
  5. Vuex简介
  6. js 构造函数中的 return
  7. 接口测试中GET和POST两种基本HTTP请求方法的区别
  8. LeetCode 63. Unique Paths II不同路径 II (C++/Java)
  9. ICCV
  10. K-消亡的质数-(简单数学)