使用ArrayList和扫描仪从文本文件中打印特定号码

时间:2019-03-27 09:38:58

标签: java arraylist text-files java.util.scanner

我需要通过使用扫描仪输入数字来从文本文件中获取特定的数字。 该程序必须能够将多个数字加在一起。

示例如果我键入1,那么我将得到数字80。在键入2之后,我将得到数字85,然后将两个数字相加。结果80 + 85 =165。

我的文本文件如下:

1
80

2
85

3
50

我能够打印文本文件中的所有数字并将其输入到ArrayList中,但是我需要打印出特定的数字。

2 个答案:

答案 0 :(得分:0)

代替使用数组列表,而使用并将其存储在Java中的HashMap(键值对)中。

HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
map.put(1,80);
map.put(2,85);
// To retrieve the values 
map.get(2); // returns 85 

因此值的检索变得容易且复杂度为O(1)。

答案 1 :(得分:0)

您可以读取所有txt文件数据并将其存储到键值对映射中。键将是数字索引,而值将是实际数字。然后从映射中获取键并添加它们各自的值。 代码如下:

public class NumberRead{
    public static String readFileAsString(String fileName)throws Exception 
    { 
        String data = ""; 
        data = new String(Files.readAllBytes(Paths.get(fileName))); 
        return data; 
    } 

    public static void main(String[] args) throws Exception {
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        String data = readFileAsString("-----Your Numbers.txt Path-----"); 
        String[] split = data.split("\\s+");
        for(int i=0;i<split.length;i++) {
            if(i%2==0) {
                map.put(Integer.parseInt(split[i]), Integer.parseInt(split[i+1]));
            }
        }
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter First Number Index");
        int first = sc.nextInt(); 
        System.out.println("Enter Secound Number Index");
        int second = sc.nextInt();

        if(map.containsKey(first)&&map.containsKey(second)) {
            System.out.println("Addition is: "+((map.get(first))+map.get(second)));
        } else {
            System.out.println("Indexes are not present");
        }
        sc.close();
    }
}

您的Numbers.txt文件应采用以下格式:

1 80
2 85
3 50
4 95
5 75