how2j.cn


工具版本兼容问题
System.out 是常用的在控制台输出数据的
System.in 可以从控制台输入数据


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



4分36秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : System.in   
步骤 2 : Scanner读取字符串   
步骤 3 : Scanner从控制台读取整数   
步骤 4 : 练习-自动创建类   
步骤 5 : 答案-自动创建类   

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读取字符串

edit
使用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); } } }
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从控制台读取整数

edit
使用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); } }
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);
	}
}
步骤 4 :

练习-自动创建类

edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
自动创建有一个属性的类文件。
通过控制台,获取类名,属性名称,属性类型,根据一个模板文件,自动创建这个类文件,并且为属性提供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@; } }
public class @class@ {
    public @type@ @property@;
    public @class@() {
    }
    public void set@Uproperty@(@type@  @property@){
        this.@property@ = @property@;
    }
     
    public @type@  get@Uproperty@(){
        return this.@property@;
    }
}
步骤 5 :

答案-自动创建类

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

5分27秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


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


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-11-09 自动创建类
Qingz




很不错的练手作业,结合前几节课学的很快就能做出来了 模版文件template.txt
    public static void main(String[] args){
        System.out.println("请输入类的名称:");
        Scanner scanner = new Scanner(System.in);
        String class_name = scanner.nextLine();

        System.out.println("请输入属性的类型:");
        scanner = new Scanner(System.in);
        String property_type = scanner.nextLine();

        System.out.println("请输入属性的名称:");
        scanner = new Scanner(System.in);
        String property_name = scanner.nextLine();
        char[] chars = property_name.toCharArray();
        chars[0] = Character.toUpperCase(chars[0]);
        String Uproperty_name = String.valueOf(chars);

        File file_template = new File("E:/Project/Practice/template.txt");
        File file = new File("E:/Project/Practice/"+class_name+".java");
        try(FileReader fileReader = new FileReader(file_template);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            FileWriter fileWriter = new FileWriter(file);
            PrintWriter printWriter = new PrintWriter(fileWriter);
        ){
            System.out.println("替换后的内容");

            String readline = null;
            while((readline = bufferedReader.readLine()) != null) {
                if(readline.contains("@class@"))
                    readline = readline.replace("@class@",class_name);
                if(readline.contains("@type@"))
                    readline = readline.replace("@type@",property_type);
                if(readline.contains("@property@"))
                    readline = readline.replace("@property@",property_name);
                if(readline.contains("@Uproperty@"))
                    readline = readline.replace("@Uproperty@", Uproperty_name);

                printWriter.println(readline);
                System.out.println(readline);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            System.out.println("文件保存在:"+file.getAbsoluteFile());
        }
    }

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-10-22 交作业-自动创建类
小企业哒




String mark = null; 在try,catch语句前创建字符串来存放模板内容,如果放在try,catch内则在后边的语句无法使用字符串 replacement = replacement.replaceAll("@class@", className); 通过replaceAll()语句将模板文件内的字符串替换为控制台输入的字符串 public static String UPCase(String str) { } 类名和get,set方法需要使用大写,所以创建一个将字符串首字母大写的方法 public static String UPString(String str) { } 属性类型如果为string,则需要将首字母大写
加载中 >
public class HomeWork {

	// 自动创建有一个属性的类文件。
	// 通过控制台,获取类名,属性名称,属性类型,根据一个模板文件,自动创建这个类文件,并且为属性提供setter和getter
	public static void main(String[] args) {

		// 控制台输入字符串
		Scanner input = new Scanner(System.in);
		System.out.println("请输入类的名称 : ");
		String Name = input.nextLine();
		String className = UPCase(Name);
		System.out.println("请输入属性的类型 : ");
		String type = input.nextLine();
		String typeName = UPString(type);
		System.out.println("请输入属性的名称 : ");
		String property = input.nextLine();
		System.out.println("替换后的内容 : ");
		String Uproperty = UPCase(property);

		// 读取模板文件
		File ModelFile = new File("D:\\murasame\\IO\\SystemIn\\Model.txt");
		String mark = null;

		try (FileReader fr = new FileReader(ModelFile)) {
			char[] array = new char[(int) ModelFile.length()];
			fr.read(array);
			mark = new String(array);
		} catch (IOException e) {
			e.printStackTrace();
		}

		File FinalFile = new File("D:\\murasame\\IO\\SystemIn\\SystemIn.txt");

		// 使用replaceAll语句将模板中的字符串替换为控制台输入的字符串
		String replacement = mark;
		replacement = replacement.replaceAll("@class@", className);
		replacement = replacement.replaceAll("@type@", typeName);
		replacement = replacement.replaceAll("@property@", property);
		replacement = replacement.replaceAll("@Uproperty@", Uproperty);

		try (FileWriter fw = new FileWriter(FinalFile)) {
			fw.write(replacement);
		} catch (IOException e) {
			e.printStackTrace();
		}

		System.out.println("替换后的内容:");
		System.out.println(replacement);
		System.out.println("文件保存在:" + FinalFile.getAbsolutePath());
	}

	// 创建将首字母大写的方法
	public static String UPCase(String str) {
		char mark = Character.toUpperCase(str.charAt(0));
		String result = str.substring(1);
		return mark + result;
	}

	// 创建将string首字母大写的方法
	public static String UPString(String str) {

		char mark1 = ' ';
		String mark2 = "";
		String result = null;
		if (str.equals("string")) {
			mark1 = Character.toUpperCase(str.charAt(0));
			mark2 = str.substring(1);
			result = mark1 + mark2;
		} else {
			result = str;
		}
		return result.trim();
	}
}

							


3 个答案

yjh12121
答案时间:2019-11-01
yjh12121
答案时间:2019-11-01
削板军霸
答案时间:2019-10-25



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-10-19 疑问
2019-10-10 请问两个@之间加个字符串表示什么意思啊?为什么里面的内容可以替换?
2019-10-07 作业-自动创建类
2019-09-17 为什么用@Test测试控制台一直在循环
2019-09-07 自动创建类——通过控制台输入数据替换关键字
2019-09-03 作业:自动创建类
2019-08-04 提交作业
2019-07-23 交作业
2019-06-28 交作业
2019-05-31 交作业 代码不是很简洁
2019-05-28 ZZ交作业 System.in 自动生成类文件
2019-05-28 ZZ交作业 System.in 自动生成类文件
2019-05-13 自动创建类 作业
2019-05-02 交作业
2019-04-21 交作业(一),欢迎暂时没思路的朋友来交流参考
2019-04-10 交作业
2019-04-04 自动创建类答案
2019-03-26 自动创建类作业完成,还有个疑问。
2019-03-26 自动创建类
2019-03-19 交作业
2019-03-18 交作业
2019-03-15 改良版,在当前java工程下的bean包下创建bean文件。
2019-02-25 那我也来提交作业吧
2019-02-19 作业
2019-01-26 利用@做正则匹配 ,然后字符串替换,这是注解的实现原理么?
2019-01-25 交作业
2018-12-09 作业
2018-12-02 作业
2018-11-24 交作业
2018-11-22 作业
2018-09-20 交作业了
2018-08-16 作业~~
2018-07-30 作业
2018-07-29 交作业
2018-07-23 交作业
2018-07-10 和大家的解法大同小异,多了一个get,set方法属性名首字母大写
2018-05-07 练习
2018-03-30 只有@property@可以被替换,其他没有被替换,求解?
2018-02-24 很不解为什么无法替换字符串
2017-11-21 用scanner读取整数后再读取字符串
2017-05-15 文件不出现在Eclipse中
2017-02-16 练习答案48行




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-I/O-System.in 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 881555796
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图