• Day_14【IO流】扩展案例2_缓冲字符输出、输入流进行用户名的创建


    需求分析

    •  1.项目根目录下建立文件: user.txt,文件中存放用户名和登录密码,格式:用户名,密码,如:aaa,123;
       2.user.txt文件中初始存放的用户信息有如下:
       	jack,123
       	rose,123
       	tom,123
       3.要求完成如下功能:
       	程序运行时:控制台提示用户输入注册的用户名和密码;
      		验证键盘录入的用户名跟user.txt中已注册的用户名是否重复:
      			是:控制台提示:用户名已存在
      			否:将键盘录入的用户名及密码写入user.txt文件,并在控制台提示:注册成功; 
      

    思路

    •  1.键盘录入用户名和密码并用两个String变量接受
       2.创建输入流对象关联user.txt
       3.创建集合对象, 用于存储读取到的数据
       4.定义boolean类型的标记flag, 假设键盘录入的用户名不存在, 默认为false
       5.遍历集合获取到每一个数据(数据是用户名,密码的字符串, 思路不要乱)
       	a)根据逗号切割当前字符串, 获取字符串数组中0索引的用户名
       	b)拿着键盘录入的用户名和切割后的用户名逐个对比, 相同的话将flag改为true
       6.判断flag
       	a)true : 提示已经存在
       	b)false: 创建输出流对象关联user.txt, 并将键盘录入的用户名和密码拼接上逗号写出.(注意尾部追加)
      

    代码

    package com.itheima2;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Test2 {
    	public static void main(String[] args) throws IOException {
    		//创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		
    		//键盘录入用户名和密码并用两个String变量接受
    		System.out.println("请输入您的用户名:");
    		String userName = sc.nextLine();
    		
    		System.out.println("请输入您的用户密码:");
    		String password = sc.nextLine();
    		
    		//创建输入流对象关联user.txt
    		BufferedReader br = new BufferedReader(new FileReader("user.txt"));
    		
    		//创建集合对象, 用于存储读取到的数据
    		ArrayList<String> array = new ArrayList<String>();
    		
    		String line;
    		while((line = br.readLine()) != null) {
    			array.add(line);
    		}
    		
    		br.close();
    		
    		//定义boolean类型的标记flag, 假设键盘录入的用户名不存在, 默认为false
    		boolean flag = false;
    		
    		//遍历集合获取到每一个数据(数据是用户名,密码的字符串, 思路不要乱)
    		for(String s : array) {
    			//根据逗号切割当前字符串, 获取字符串数组中0索引的用户名
    			String[] strArray = s.split(",");
    			//拿着键盘录入的用户名和切割后的用户名逐个对比, 相同的话将flag改为true
    			if(userName.equals(strArray[0])) {
    				flag = true;
    			}
    		}
    		
    		//判断flag
    		if(flag) {
    			//true : 提示已经存在
    			System.out.println("用户名已存在");
    		} else {
    			//false: 创建输出流对象关联user.txt, 并将键盘录入的用户名和密码拼接上逗号写出.(注意尾部追加)
    			BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt",true));
    			
    			bw.write(userName+","+password);
    			bw.newLine();
    			bw.flush();
    			
    			bw.close();
    			
    			System.out.println("注册成功");
    		}
    	}
    
    }
    
    

    控制台输出内容
    控制台输出内容

  • 相关阅读:
    IIS下配置跨域设置Access-Control-Allow-Origin
    Arcgis去除Z,M值
    GIS开发之数据查询
    GIS开发之计算四参数,七参数
    Openlayer3之绚丽的界面框架-Materialize
    Openlayer3之C++接口在javaScript的封装使用
    Windows环境和Linux环境下Redis主从复制配置
    Centos 7 安装和配置Redis
    .net手动编写Windows服务
    SQL获取当前日期的年、月、日、时、分、秒数据
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772518.html
Copyright © 2020-2023  润新知