案例:在根目录下创建一个空白的data.txt的文本文件
键盘录入一个长度大于10的字符串,
之后从字符串中随机获取5个字符(可以重复)存入一个字符数组,
把这五个字符分别写入到data.txt中
案例分析:我们用到的知识点:IO流输出流,键盘录入,数组,随机数
这个案例考察的知识点非常多,很综合,我们一起来做一下吧!
首先,我们新建一个文本文件。在项目上右键:
第二步,键盘录入一个长度大于10的字符串。
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长度大于10的字符串");//abcdefghijfgssdgsd
String s = sc.nextLine();
}
第三步,从字符串中随机获取5个字符。写入数组。
[Java] 纯文本查看 复制代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长度大于10的字符串");//abcdefghijfgssdgsd 0 9
String s = sc.nextLine();
//获取字符串中的字符 charAt(index)
Random r = new Random();
char[] arr = new char[5];
for (int i = 0; i < 5; i++) {
int index = r.nextInt(s.length());//包含头不包含尾的
arr = s.charAt(index);
}
第四步,把这5个字符写入文本文件中
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长度大于10的字符串");// abcdefghijfgssdgsd
String s = sc.nextLine();
// 获取字符串中的字符 charAt(index)
Random r = new Random();
char[] arr = new char[5];
FileWriter fw = new FileWriter("data.txt");
for (int i = 0; i < 5; i++) {
int index = r.nextInt(s.length());// 包含头不包含尾的
arr = s.charAt(index);
fw.write(arr + "\r\n");
}
fw.close();
}
上面这是用FileWriter做的一种方法,我们还学过别的流还记得吗?这里我们再说一种BufferedWriter的方法。
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长度大于10的字符串");//abcdefghijfgssdgsd
String s = sc.nextLine();
//获取字符串中的字符 charAt(index)
Random r = new Random();
char[] arr = new char[5];
BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));
for (int i = 0; i < 5; i++) {
int index = r.nextInt(s.length());//包含头不包含尾的
arr = s.charAt(index);
//第二种:
bw.write(arr);
bw.newLine();
}
bw.close();
}
来我们运行看一下!
打开文件看看:
ok!这个案例作为一个经典案例用来复习IO流,for循环,随机数,键盘录入,数组相关知识非常不错,很新颖。其实,每个案例都有很多种写法,不同的人可能有不同的思路。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。