Java 从数组中搜索作为整数的字符串
我已从文件中检索所有字符串,并通过拆分方法将它们放入数组中。我想知道如何从字符串类型的数组中搜索int。以下是txt文件和我的代码:Java 从数组中搜索作为整数的字符串,java,Java,我已从文件中检索所有字符串,并通过拆分方法将它们放入数组中。我想知道如何从字符串类型的数组中搜索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 j
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();
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公开课阅读{
@抑制警告(“资源”)
公共静态void main(字符串[]args)引发IOException{
BufferedReader br=新的BufferedReader(新文件读取器(新文件(“test.txt”));
试一试{
//String line=br.readLine();
String line=br.readLine();
列表=新的ArrayList();
while(行!=null)
{
//list.add(line);//在列表中添加行
对于(字符串标记:line.split(“:”){//使用“:”拆分每行
如果(!token.trim().equals(“学生名”){//有条件地将令牌添加到列表中。
列表。添加(令牌);
}
}
line=br.readLine();//读取下一行
}
String[]stringArr=list.toArray(新字符串[0]);
list.add(stringArr[0]);
字符串[]a=null;
扫描仪输入;
in=新扫描仪(System.in);
字符串b=in.next();
对于@RC在注释中暗示的(inti=0;i),您使用的是(键,值)对。
您正在存储字符串,但应使用整数进行查找
最容易使用的数据结构是HashMap
HashMap<Integer, String> db = new HashMap<Integer,String>();
db.put(id,name); //inserting into db
db.get(id); //retrieve name using id
HashMap db=newhashmap();
db.put(id,name);//插入数据库
db.get(id);//使用id检索名称
希望这能把事情弄清楚。因为要将一个ID映射到一个名称,你需要读两行代码,我建议你读两行代码,分别调用一个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);
}
在数组中循环,但当i==0
时,尝试访问索引-1
。想想会发生什么;-)创建java.util.Map
(ID>name)或(ID>Student)我应该在哪里输入此项??步骤1:读取文件,步骤2:解析文件以填充映射
,步骤3:要求用户输入ID,步骤4:在映射
中查找(使用get()
)对于ID和outputi,我最近刚开始使用java,所以我觉得很难理解这么多的数据类型。你能给出什么概念吗?你的意思是我应该把文件中的字符串放在map而不是数组中?
for(int i=0; i<stringArr.length; i++) {
System.out.print(stringArr[i-1]);
...
}