String[] s = str.split("\\."); char c = s[1].charAt(0); String temp = "1"+c;// // String temp = String.valueOf(c); int i = Integer.parseInt(temp)%10;
时间: 2024-04-19 18:28:02 浏览: 152
根据你提供的代码,首先使用 `split("\\.")` 方法将字符串 `str` 按照小数点进行分割,得到一个字符串数组 `s`,其中 `s[0]` 是小数点之前的部分,`s[1]` 是小数点之后的部分。
然后,通过 `s[1].charAt(0)` 可以获取到小数点后第一个字符,并将其保存在变量 `c` 中。
接下来,你使用了 `String temp = "1" + c;` 来构造一个新的字符串 `temp`,其中字符串 "1" 与字符 `c` 进行了拼接。
最后,通过 `Integer.parseInt(temp)` 将字符串 `temp` 转换为整数,并取其除以 10 的余数,保存在变量 `i` 中。
需要注意的是,这段代码中假设 `str` 中小数点后面只有一个字符,并且该字符是数字。否则,在获取字符 `c` 和构造字符串 `temp` 时可能会出现异常。
相关问题
import java.io.*; import java.util.*; public class WordCount { public static void main(String[] args) throws IOException { // 读取文件内容 FileReader reader = new FileReader("四级常用单词.txt"); BufferedReader br = new BufferedReader(reader); String line; //接收一行 StringBuilder sb = null; while ((line = br.readLine()) != null) { line.trim(); String[] split = line.split("[^a-zA-Z]"); if (split[0] != null){ sb.append(split[0]); } } String str = sb.toString(); br.close(); reader.close(); int temp; int [] letters=new int[26] ; String words = str.toLowerCase(); for (int i = 0; i < words.length(); i++) { char c = words.charAt(i); letters[c - 'a'] ++; for (int i1 = 0; i1 < 26; i1++) { System.out.println((char) (i1 + 'a') + letters[i]); } } 更改代码中存在的错误
在代码中存在一个错误,即StringBuilder对象sb未初始化,需要进行初始化,可以将其赋值为一个新的StringBuilder对象,如下所示:
```
StringBuilder sb = new StringBuilder();
```
另外,还需要将输出语句中的letters[i]改为letters[i1],如下所示:
```
System.out.println((char) (i1 + 'a') + letters[i1]);
```
import java.io.*; import java.util.*; public class WordCount { public static void main(String[] args) throws IOException { // 读取文件内容 FileReader reader = new FileReader("四级常用单词.txt"); BufferedReader br = new BufferedReader(reader); String line; //接收一行 StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { line.trim(); String[] split = line.split("[^a-zA-Z]"); if (split[0] != null){ sb.append(split[0]); } } String str = sb.toString(); br.close(); reader.close(); // 统计字母出现次数 int temp; int [] letters=new int[26] ; String words = str.toLowerCase(); for (int i = 0; i < words.length(); i++) { char c = words.charAt(i); letters[c - 'a'] ++; } // 按照字母出现频率排序 TreeMap<Integer,Character> treeMap= new TreeMap<>(); for (int i = 0; i < 26; i++) { treeMap.put(letters[i],(char)(i + 'a')); } //进行排序 FileWriter fw = new FileWriter("result.txt"); Set keyset = treeMap.keySet(); Iterator it = keyset.iterator(); for (int j = 0;it.hasNext();j++){ Object value = it.next(); String result = treeMap.get(value) +":" +value+"\n"; fw.write((result)); } fw.close(); }}
这段代码是用来统计一个文本文件中所有单词中每个字母出现的次数,并按字母出现的次数进行排序输出另一个文件中。具体流程如下:
1. 使用FileReader和BufferedReader读取文件内容,每次读取一行,将行首的空白字符去掉,使用正则表达式"[^a-zA-Z]"将每行文本按照非字母字符分割成多个单词,只取第一个单词加入StringBuilder中。
2. 将StringBuilder中的单词转成小写字母,使用一个长度为26的数组letters来统计每个字母出现的次数。
3. 将letters数组中每个元素的值和对应的字母一起存入一个TreeMap中,TreeMap会按照元素值进行排序。
4. 遍历TreeMap,将结果输出到另一个文件中。
阅读全文