Java 从数组中搜索作为整数的字符串

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

我已从文件中检索所有字符串,并通过拆分方法将它们放入数组中。我想知道如何从字符串类型的数组中搜索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();
            }
        }
    }
导入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]);
    ...
}