import java.io.*; import java.util.Scanner; public class mynot{ public static void main(String args[]){ File file= new File("wenzhang.txt"); if(file.canRead()){System.out.println("文件存在");} else {System.out.println("文件不存在");} System.out.println("输入查询的字"); try{ Scanner search=new Scanner(System.in);//读入用户的输入 search.close(); String searchStr=search.nextLine(); FileReader medium=new FileReader(file); BufferedReader sr=new BufferedReader(medium); int sum=0; for (;sr.readLine()!=null;)//判断每行中有多少个符合条件的 { String mod=sr.readLine();//临时存放读入内容 if(mod.contains(searchStr)){ int c=0; for (;c!=-1;sum++){ c=mod.indexOf(searchStr); mod = mod.substring(c+searchStr.length()); System.out.println("第"+sum+"次出现"); } } } medium.close(); sr.close(); BufferedWriter wr= new BufferedWriter(new FileWriter(file , true)); wr.write((char)(sum)); } catch(Exception e){} }}
时间: 2024-04-25 15:26:36 浏览: 5
这是一个 Java 的程序,主要实现的功能是读取指定的文本文件,并在文件中查询指定的字符或字符串,并统计该字符或字符串在文件中出现的次数,最后将出现次数写入到文件中。
程序中的关键代码包括:
1. 使用 File 类创建指向指定文件的对象。
2. 使用 Scanner 类读取用户输入的查询字符或字符串。
3. 使用 FileReader 类和 BufferedReader 类读取文件内容,并使用 String 类的 contains() 方法判断每行中是否包含查询字符或字符串。
4. 使用 String 类的 indexOf() 方法和 substring() 方法,统计查询字符或字符串在每行中出现的次数。
5. 使用 BufferedWriter 类和 FileWriter 类将查询字符或字符串在文件中出现的次数写入到文件中。
需要注意的是,程序中存在一些问题,例如 Scanner 对象在使用前应该先关闭,而在程序中却是先关闭再使用;写入文件的内容应该是数字,而程序中使用了 char 类型进行强制转换。此外,程序中的注释也需要做一些修改和完善。
相关问题
import java.io.*; import java.util.Arrays; import java.util.Scanner; public class FileTest { public static void main(String[] args) throws IOException { // 接收给定的一行字符串 Scanner scanner = new Scanner(System.in); String line = scanner.nextLine();
// 创建文件对象,并检查文件是否存在 File file = new File(line); if (!file.exists()) { System.out.println("文件不存在!"); return; } // 读取文件内容 BufferedReader reader = new BufferedReader(new FileReader(file)); String content = ""; String temp; while ((temp = reader.readLine()) != null) { content += temp + "\n"; } // 关闭文件读取器 reader.close(); // 输出文件内容 System.out.println("文件内容:\n" + content); } }
这段代码是一个读取文件并输出文件内容的Java程序。首先,通过Scanner接收用户输入的文件路径,然后判断文件是否存在。如果文件不存在,则输出提示信息并结束程序。如果文件存在,则创建文件读取器并读取文件内容,将读取到的内容存储在一个字符串变量中。最后,关闭文件读取器并输出文件内容。
import java.io.*; import java.util.*; import java.util.Scanner; public class demo{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); //a是要输入的字符 for(int i=1;i<7;i+=2){ for(int j=1;j<=(7-i)/2;j++){ System.out.print(" "); } for(int j=1;j<=i;j++){ System.out.print(a); } System.out.println(); } } }解释代码
这段代码是一个简单的Java程序,用于打印出一个带有空格的字符图案。下面对代码进行解释:
1. `import java.io.*;` 和 `import java.util.*;` 这两行代码导入了Java的输入输出和工具类库。
2. `import java.util.Scanner;` 这行代码导入了Scanner类,用于接收用户的输入。
3. `public class demo { ... }` 这是定义了一个名为demo的公共类。
4. `public static void main(String[] args) { ... }` 这是定义了一个名为main的公共静态方法,是程序的入口点。
5. `Scanner sc = new Scanner(System.in);` 这行代码创建了一个Scanner对象sc,用于接收从标准输入读取的数据。
6. `int a = sc.nextInt();` 这行代码使用nextInt()方法从用户输入中读取一个整数,并将其赋值给变量a。
7. `for(int i = 1; i < 7; i += 2) { ... }` 这是一个外层循环,用于控制字符图案的行数。循环条件是i小于7,并且每次循环加2。
8. `for(int j = 1; j <= (7 - i) / 2; j++) { ... }` 这是一个内层循环,用于打印每行的空格。循环次数是(7 - i) / 2,即每行前面的空格数。
9. `System.out.print(" ");` 这行代码打印一个空格。
10. `for(int j = 1; j <= i; j++) { ... }` 这是另一个内层循环,用于打印每行的字符。循环次数是i,即每行的字符数。
11. `System.out.print(a);` 这行代码打印字符a。
12. `System.out.println();` 这行代码打印一个换行符,用于换行。
这样,根据用户输入的整数a,程序将打印出一个带有空格的字符图案。图案的行数为6,每行字符的数量依次为1、3、5、7、9、11,字符为用户输入的整数a。