为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2022-09-07 17:16:23
我需要通过使用扫描仪键入数字从文本文件中获取特定数字。该程序需要能够将多个数字相加。示例 如果我键入1,那么我将得到数字80。在我键入2之后,我会得到数字85,然后将两个数字相加。结果 80 + 85 = 165。我的文本文件如下所示:180285350我能够打印文本文件中的所有数字并将其放入ArrayList,但我需要打印出一个特定的数字。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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


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


查看完整回答
反对 回复 2022-09-07
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

不要使用数组列表,而是在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)。


查看完整回答
反对 回复 2022-09-07
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信