搜索字符串为数组中的整数

时间:2014-03-22 08:40:29

标签: java

我已从文件中检索所有字符串,并通过拆分方法将它们放在数组中。我想知道如何从类型为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 姓名:诺基亚

2 个答案:

答案 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。想想会发生什么; - )