gpt4 book ai didi

java - 在java中多次搜索文本文档

转载 作者:行者123 更新时间:2023-12-01 04:43:07 26 4
gpt4 key购买 nike

我已经仔细寻找上述问题的答案。我一直在构建一个计算器,它将接受用户在文本文件中输入产品名称,程序将在文档中搜索产品名称,一旦找到它,它将记录名称旁边的整数和用它来计算价格。虽然我已经完成了所有这些工作,但我的主要问题是,如果程序第一次找不到该名称,则需要多次运行该文档。就像现在一样,它将遍历整个文档,并在到达文件末尾时结束。

这是文本文件

Wool 15 1

Seeds 3 1

Feathers 3 1

String 2 1

Beef 2 1

Fish 2 1

Bone 1 1

Iron 1 1

GunPowder 1 1

Glowstone 1 7

InkSack 1 2

Flesh 2 1

Eggs 2 1

这是我的代码

public static void main(String[]args)抛出 FileNotFoundException{

//Declare Variables
String productName, productComp;
int productAmount, productPrice,itemNum, sum = 0;
boolean check = false;

Scanner console = new Scanner(System.in);
Scanner inFile = new Scanner(new FileReader("SelllingPrices.txt"));

System.out.println("Enter the number of items");

for(itemNum = console.nextInt(); itemNum > 0; itemNum--){
System.out.println("Enter the name of the item");
productComp = console.next();

while(check != true){

productName = inFile.next();
System.out.println(productName);
if(productName.compareTo(productComp) == 0){
productAmount = inFile.nextInt();
productPrice = inFile.nextInt();
sum += calculateSum(productAmount, productPrice, productComp);
check = true;

}
else{
check = false;
}
}
check = false;
}
calculateTotalPayout(sum);

}

公共(public)静态intcalculateSum(intproductAmount,intproductPrice,StringproductName){

int totalAmount, divisor, sum = 0;
Scanner console = new Scanner(System.in);
System.out.println("Enter the amount of " + productName + " recieved");
totalAmount = console.nextInt();

if(totalAmount > productAmount){
divisor = totalAmount / productAmount;
sum = productPrice * divisor;
return sum;
}
else{
sum = productPrice;
return sum;
}

}

公共(public)静态无效计算TotalPayout(int sum){ int 温度 = 0,计数器 = 0;

if(sum > 64){
temp = sum;
while(temp >= 64){
temp -= 64;
counter++;
}
}
System.out.println("The total comes to " + sum + " emeralds or " + counter + " stacks of emeralds and " + temp + " emeralds left over");

}}

我只需要知道要修复什么,以便一旦到达文件末尾,如果没有找到名称,就可以返回到文件开头并再次查看。

感谢您提供的任何帮助。我希望我的问题很清楚。

一些澄清。是的,我希望用户能够输入不同的名称并重新搜索文件,并且我添加了完整的代码,让人们知道发生了什么。

最佳答案

为什么要多次搜索?为什么不将所有信息存储在 map 中并查找呢?以下是一些关键部分(不是完整的工作代码):

HashMap<String,Integer[]> things = new HashMap<String,Integer[]>();

// Read each line and add to HashMap using:
Name = productName;
nums[0] = inFile.nextInt();
nums[1] = inFile.nextInt();
things.put(Name,nums);

// When you're done, ask the user what they're looking for and look it up.
productComp = console.next();
Integer[] nums = things.get(productComp);
if(nums == null){ // or try/catch for NullPointerException
// Doesn't exist! Try again!
}else{
productAmount = nums[0];
productPrice = nums[1];
sum += calculateSum(productAmount, productPrice, productComp);
check = true;
}

关于java - 在java中多次搜索文本文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16223209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com