Распечатать конкретный номер из текстового файла, используя ArrayList и сканер - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно получить определенное число из текстового файла, набрав номер с помощью сканера. Программа должна иметь возможность добавлять несколько номеров вместе.

Пример. Если я введу 1, то получу число 80. А после ввода 2 получу число 85, а затем сложу вместе два числа. Результат 80 + 85 = 165.

Мой текстовый файл выглядит так:

1
80

2
85

3
50

Я могу напечатать все числа из моего текстового файла и передать их в ArrayList, но мне нужно распечатать конкретное число.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Вы можете прочитать все данные 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
0 голосов
/ 27 марта 2019

Вместо использования списка Array, используйте и сохраните его в HashMap (пара ключ-значение) в Java.

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...