- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要填充我的totalprices ArrayList,但不知道如何。基本上我需要获取价格 ArrayList 和数量 ArrayList 并将它们相乘。然后获取这些值并将它们添加到totalprices ArrayList 中。然后找到总价格的最小值和最大值。我正在抓着我的头发试图弄清楚这个问题。请帮忙。谢谢!
我的代码:
import java.util.*;
import java.io.*;
public class Project01 {
public static void main(String[] args) {
ArrayList<String> titles = new ArrayList<String>();//Declare the array lists that will be used.
ArrayList<String> types = new ArrayList<String>();
ArrayList<Double> prices = new ArrayList<Double>();
ArrayList<Integer> quantities = new ArrayList<Integer>();
ArrayList<Double> totalprices = new ArrayList<Double>();
int count = 0;//Set the counter to zero.
Scanner in = new Scanner(System.in);//Establish the scanner so user input can be properly read.
String database = getFile(in);//Setting the file name variable from the method below that asks the user for the file's name.
try {
File file = new File(database);
Scanner inputFile = new Scanner(file);
System.out.println();
System.out.println("Product Summary Report");
System.out.println("------------------------------------------------------------");
while (inputFile.hasNextLine()) {
getTitle(titles, inputFile.nextLine());
getQuantity(quantities, inputFile.nextInt());
inputFile.nextLine();
getPrice(prices, inputFile.nextDouble());
inputFile.nextLine();
getType(types, inputFile.nextLine());
System.out.println("Title: " + titles.get(count));
System.out.println(" Product Type: " + types.get(count));
System.out.println(" Price: " + prices.get(count));
System.out.println(" Quantity: " + quantities.get(count));
System.out.println();
count++;
}
System.out.println("-----------------------------------------------------------------");
System.out.println("Total products in database: " + count);
Integer index = getLargestQuantityTitle(quantities);
System.out.println("Largest quantity item : " + titles.get(index) + " (" + types.get(index) + ")");
ArrayList<Double> highestTotalDollarAmount = getTotalprices(quantities, prices);
Double highestTotalDollarAmount = getHighestDollarAmount(totalprices);
System.out.println("Highest total dollar item: $" + highestTotalDollarAmount);
Integer index2 = getSmallestQuantityTitle(quantities);
System.out.println("Smallest quantity item: " + titles.get(index2) + " (" + types.get(index2) + ")");
System.out.println("Lowest total dollar item: ");
System.out.println("-----------------------------------------------------------------");
inputFile.close();
} catch (IOException e) {
System.out.println("There was a problem reading from " + database);
}
in.close();
}
private static String getFile(Scanner inScanner) {
System.out.print("Enter database filename: ");
String fileName = inScanner.nextLine();
return fileName;
}
private static void getTitle(ArrayList<String> titles, String title) { //This method is creating the array list of the titles from the input file.
titles.add(title);
}
private static void getType(ArrayList<String> types, String type) { //This method is creating the array list of the types from the input file.
types.add(type);
}
private static void getPrice(ArrayList<Double> prices, double price) { //This method is creating the array list of the prices from the input file.
prices.add(price);
}
private static void getQuantity(ArrayList<Integer> quantities, int quantity) { //This method is creating the array list of the quantities from the input file.
quantities.add(quantity);
}
private static Integer getLargestQuantityItem(ArrayList<Integer> quantities){ //This method is determining the maximum value within the quantities array list.
return Collections.max(quantities);
}
private static Double getHighestPricedItem(ArrayList<Double> prices){ //This method is determining the maximum price within the prices array list.
return Collections.max(prices);
}
private static Integer getHighestTotalDollarItem(ArrayList<Integer> prices){ //This method is determining the maximum total value, basically the highest quantity of the item multiplied by it's price.
return Collections.max(prices);
}
private static Integer getSmallestQuantityItem(ArrayList<Integer> quantities){ //This method is determining the minimum value within the quantities array list.
return Collections.min(quantities);
}
private static Integer getLargestQuantityTitle(ArrayList<Integer> quantities){
int index = 0;
Integer largestQuantityMainVariable = getLargestQuantityItem(quantities);
for (int i = 0; i < quantities.size(); i++) {
if (quantities.get(i) != null && quantities.get(i).equals(largestQuantityMainVariable)) {
index = i;
break;
}
}
return index;
}
private static Integer getSmallestQuantityTitle(ArrayList<Integer> quantities){
int index2 = 0;
Integer smallestQuantityMainVariable = getSmallestQuantityItem(quantities);
for (int i = 0; i < quantities.size(); i++) {
if (quantities.get(i) != null && quantities.get(i).equals(smallestQuantityMainVariable)) {
index2 = i;
break;
}
}
return index2;
}
private static ArrayList<Double> getTotalprices (List<Integer> quantities, List<Double> prices){
ArrayList<Double> totalprices = new ArrayList<Double>();
for (int i = 0; i < quantities.size(); i++) {
totalprices.add(quantities.get(i) * prices.get(i));
}
return totalprices;
}
private static Double getHighestDollarAmount(ArrayList<Double> totalprices){ //This method is determining the maximum price within the prices array list.
return Collections.max(totalprices);
}
}
输出应如下所示:
Enter database filename: proj1_input.txt
Product Summary Report
------------------------------------------------------------
Title: The Shawshank Redemption
Product Type: DVD
Price: 19.95
Quantity: 100
Title: The Dark Knight
Product Type: DVD
Price: 19.95
Quantity: 50
Title: Casablanca
Product Type: DVD
Price: 9.95
Quantity: 137
Title: The Girl With The Dragon Tattoo
Product Type: Book
Price: 14.95
Quantity: 150
Title: Vertigo
Product Type: DVD
Price: 9.95
Quantity: 55
Title: A Game of Thrones
Product Type: Book
Price: 8.95
Quantity: 100
-----------------------------------------------------------------
Total products in database: 6
Largest quantity item: The Girl With The Dragon Tattoo (Book)
Highest total dollar item: $[1995.0, 997.5, 1363.1499999999999, 2242.5, 547.25, 894.9999999999999]
Smallest quantity item: The Dark Knight (DVD)
Lowest total dollar item: Vertigo ($547.25)
-----------------------------------------------------------------
输入文件(.txt 文件):
The Shawshank Redemption
100
19.95
DVD
The Dark Knight
50
19.95
DVD
Casablanca
137
9.95
DVD
The Girl With The Dragon Tattoo
150
14.95
Book
Vertigo
55
9.95
DVD
A Game of Thrones
100
8.95
Book
最佳答案
进行编辑以在下面的评论中包含 knutknutsen 的答案以及 OP 的示例实现。
您是否考虑过使用 HashMap 来实现此目的? HashMap 是一个列表对象,其中存储了 2 个对象。在下面的示例代码中,我将使用一个字符串作为“键”(这将是被索引的电影的标题),并使用一个名为 StockInfo 的创建类作为“对象”。然后,您只需要对保存在某处或传递给所使用的类的标题的引用。
类似
public class Project01{
static HashMap<String, StockInfo> movies = new HashMap<String, StockInfo>();
static StockInfo movieWithMaxPrice = new StockInfo();
static StockInfo movieWithMinPrice = new StockInfo();
static StockInfo movieWithMaxQuantity = new StockInfo();
static StockInfo movieWithMinQuantity = new StockInfo();
public static void main(String[] args){
int counter = 0;
Scanner in = new Scanner(System.in);
String database = getFile(in);
try{
File file = new File(database);
Scanner inputFile = new Scanner(file);
System.out.println();
System.out.println("Product Summary Report");
System.out.println("---------------------------------------");
while(inputFile.hasNextLine()){
StockInfo movieInfo = new StockInfo();
getTitle(movieInfo, inputFile.nextLine());
getQuantity(movieInfo, inputFile.nextInt());
inputFile.nextLine();
getPrice(movieInfo, inputFile.nextDouble());
inputFile.nextLine();
getType(movieInfo, inputFile.nextLine());
/**This works because we over-rode the toString
*call that java makes on an object when we try to
*print out the object to the console.
*/
System.out.println(movieInfo);
System.out.println();
/**The last thing we do is save the created
*StockInfo to the saved HashMap
*/
movies.put(movieInfo.getTitle(),movieInfo);
}
System.out.println("------------------------------------");
System.out.println("Total products in database: "+movies.size());
System.out.println("Largest Quantity item: "+movieWithMaxQuantity.getTitle()+" "+movieWithMaxQuantity.getQuantity());
System.out.println("Highest total dollar item: "+movieWithMaxPrice.getTitle()+" $"+movieWithMaxPrice.getPrice());
System.out.println("Smallest Quantity Item: "+movieWithMinQuantity.getTitle()+" "+movieWithMinQuantity.getQuantity());
System.out.println("Lowest total dollar item: "+movieWithMinPrice.getTitle()+" $"+movieWithMinPrice.getPrice());
} catch(IOException e){
System.out.println("There was a problem reading from "+database);
}
}
/**This method will return the fileName that is housing the
*database, which is provided to provided through an in console
*input from the user
*/
private static String getFile(Scanner inScanner){
System.out.print("Enter database filename: ");
String fileName = inScanner.nextLine();
return fileName;
}
/**This is a re-written method from the OP code, to read the line
*in the database file and fill the created StockInfo class with
*the title
*/
private static void getTitle(StockInfo si, String lineToRead){
si.setTitle(lineToRead);
}
/**This is a re-written method from the OP code, to read the line
*in the database file and fill the created StockInfo class with
*the quantity. This method also compares the given quantity
*with the saved quantities above Max and Min
*/
private static void getQuantity(StockInfo si, int quantity){
si.setQuantity(quantity);
if(movieWithMaxQuantity.getQuantity()<quantity){
movieWithMaxQuantity = si;
}
if(movieWithMinQuantity.getQuantity()>quantity){
movieWithMinQuantity = si;
}
}
/**This is a re-written method from the OP code, to read the line
*in the database file and fill the created StockInfo class with
*the price. This method also compares the given price with the
*max and min StockInfo objects saved at the top of the class,
*to see if this is higher or lower then those. If it is
*then is saves the new StockInfo object at its respective place
*so that we always have a pointer towards the max and min
*/
private static void getPrice(StockInfo si, double price){
si.setPrice(price);
if(movieWithMaxPrice.getPrice()<price){
movieWithMaxPrice = si;
}
if(movieWithMinPrice.getPrice()>price){
movieWithMinPrice = si;
}
}
/**This is a re-written method from the OP code, that takes the
*next line in the database and assigns it to the StockInfo as
*its type
*/
private static void getType(StockInfo si, String lineToRead){
si.setType(lineToRead);
}
}
/**This is the created class that will be used with the information
*that gets provided
*/
class StockInfo{
private String title = ""; //saved reference to the title
private String type = ""; //saved reference to the type
/**saved reference to the price, pre filled at -1 to avoid null pointer exception*/
private double price = -1;
/**saved reference to the quantity available, pre filled at -1 to avoid null pointer exception*/
private int quantity = -1;
/**This is the constructor, which needs nothing in this case*/
public StockInfo(){}
/**This is the setter for our saved title string above*/
public void setTitle(String title){
this.title=title;
}
/**This is the setter from our saved type string above*/
public void setType(String type){
this.type=type;
}
/**This is the setter for our saved price integer above*/
public void setPrice(double price){
this.price=price;
}
/**This is the setter for our saved quantity integer above*/
public void setQuantity(int quantity){
this.quantity=quantity;
}
/**This is the getter for the title*/
public String getTitle(){
return this.title;
}
/**This is the getter for the type*/
public String getType(){
return this.type;
}
/**This is the getter for the saved price*/
public double getPrice(){
return this.price;
}
/**This is the getter for the saved quantity*/
public int getQuantity(){
return this.quantity;
}
/**Overriding the toString call and making it return the info needed*/
@Override
public String toString(){
return "Title: "+title+" Type: "+type+" Price: "+price+" Quantity: "+quantity;
}
}
关于java - 我需要帮助从 2 个单独的 Arraylist 创建一个新的 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28057473/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!