我需要通过使用扫描仪输入数字来从文本文件中获取特定的数字。 该程序必须能够将多个数字加在一起。
示例如果我键入1,那么我将得到数字80。在键入2之后,我将得到数字85,然后将两个数字相加。结果80 + 85 =165。
我的文本文件如下:
1
80
2
85
3
50
我能够打印文本文件中的所有数字并将其输入到ArrayList中,但是我需要打印出特定的数字。
答案 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