我已从文件中检索所有字符串,并通过拆分方法将它们放在数组中。我想知道如何从类型为String的数组中搜索int。这是txt文件和我的代码:
student id= : 12
name : nokia
student id : 123
name : usb
我的代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Read {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(new File("test.txt")));
try {
// String line = br.readLine();
String line = br.readLine();
List<String> list = new ArrayList<String>();
while(line != null)
{
// list.add(line); // add lines in list
for (String token : line.split(":")) { // Splitting each line with ':'
if (!token.trim().equals("student name")) { // Adding token to list conditionally.
list.add(token);
}
}
line = br.readLine(); // read next line
}
String [] stringArr= list.toArray(new String[0]);
list.add(stringArr[0]);
String [] a = null;
Scanner in ;
in = new Scanner(System.in);
String b= in.next();
for(int i=0; i<stringArr.length; i++){
if(stringArr[i]== b){
System.out.print(stringArr[i-1]);
System.out.println(stringArr[i]);
System.out.print(stringArr[i+1]);
System.out.println(stringArr[i+2]);
System.out.print(stringArr[i+3]);
System.out.print(stringArr[i+4]);
System.out.print(stringArr[i+5]);
}
// System.out.print(stringArr[2]);
}
} finally {
br.close();
}
}
}
这不符合我的要求。 我的要求,它应该这样打印:
输入ID:1
输出结果是 学生证:1 姓名:诺基亚
答案 0 :(得分:0)
正如@RC已在评论中暗示,您正在使用(键,值)对。 您正在存储字符串,但应使用整数进行查找。
最简单的数据结构是HashMap。
HashMap<Integer, String> db = new HashMap<Integer,String>();
db.put(id,name); //inserting into db
db.get(id); //retrieve name using id
希望能够解决问题。
答案 1 :(得分:0)
因为有两行要读取以将ID映射到名称,我建议您阅读2行,在每个行上调用split,并将第二个值存储在HashMap
中,如@Adeeb建议的那样。这看起来像这样:
BufferedReader br = new BufferedReader(new FileReader(new File(
"test.txt")));
String line = null, line2 = null;
HashMap<Integer, String> db = new HashMap<Integer, String>();
while ((line = br.readLine()) != null && !line.isEmpty()) {
line2 = br.readLine();
if (line2.isEmpty())
continue;
int id = Integer.parseInt(line.split(":")[1]);
String name = line2.split(":")[1];
db.put(id, name);
}
现在,您可以阅读ID
并致电db.get(ID)
以检索映射的名称。
<强> [OFFTOPIC] 强>
for(int i=0; i<stringArr.length; i++) {
System.out.print(stringArr[i-1]);
...
}
循环遍历数组,但在-1
时尝试访问索引i == 0
。想想会发生什么; - )