- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一项作业要求我从文本文件中读取一份食谱,并处理其中的内容,例如测量单位和配料数量。我将食谱的各个部分分成一个数组列表来操作成分,因为用户将输入他们是想使用英制单位还是公制单位。从这里我创建了一个双数组列表,用于从原始列表中分离数量,所以 4 汤匙盐就变成了 4.0。在此之后,用户可以输入是否要更改食谱的份量,因此 4.0 可以变成任何正数,如 8.0。我已经对所有这些进行了编码,直到我需要将操纵的数组列表合并回一起以输出给用户为止。所以 4 种份量的原始字符串数组列表:
[2 tbsp olive oil, 3 tbsp garlic, minced, 2 tsp dried parsley, 1 cup eggplant, cut into half inch cubes, 0.5 tbsp salt, 1 cup Parmesan cheese]
必须与新的 8 份份量的相应双数组列表相结合:
[4.0, 6.0, 4.0, 2.0, 1.0, 2.0]
得到:
[4 tbsp olive oil, 6 tbsp garlic, minced, 4 tsp dried parsley, 2 cup eggplant, cut into half inch cubes, 1 tbsp salt, 2 cup Parmesan cheese]
如有任何帮助,我们将不胜感激。
import java.util.*;
import java.io.*;
class Main {
/**
* Prints methods to user
*/
public static void main(String[] args) throws Exception{
printer1();
servingReader();
System.out.println(sSize);
ingrReader();
System.out.println(ingrList);
ingrSeperator();
System.out.println(SeperatorImperialList);
choice();
}//end main
/**
* Prints origanal recipe to user
*/
public static void printer1() throws Exception{
Scanner sc = new Scanner(new File("/home/runner/recipe.txt"));
//original text file printed to the user before manipulation
while (sc.hasNextLine()){
System.out.println(sc.nextLine());
}
sc.close();//scanner closed
}
static int sSize;//int for serving size
/**
* Reads text file
*/
public static void servingReader() throws Exception{
//recipe read
File recipe = new File("/home/runner/recipe.txt");
Scanner sc = new Scanner(recipe);
//loop to find serving size
while(sc.hasNextLine()){
String s = sc.nextLine().toUpperCase();
if(s.equals("SERVING SIZE")){
sSize = sc.nextInt();
}
}
sc.close();//scanner closed
}//servingReader
static ArrayList<String> ingrList = new ArrayList<>();//ArrayList for ingredients created
static String scan;
/**
* Reads recipe and adds ingredients section to list
*/
public static void ingrReader() throws Exception{
//recipe read
File recipe = new File("/home/runner/recipe.txt");
Scanner sc = new Scanner(recipe);
//loop to find ingredients section or recipe
while(sc.hasNextLine()){
String s = sc.nextLine().toUpperCase();
//if scanner finds header INGREDIENTS, section added to ingrList
if(s.equals("INGREDIENTS")){
while(sc.hasNextLine()){
int i = 0;
scan = sc.nextLine();
ingrList.add(i, scan);
i+= 1;
//if nothing is found, breaks
if(scan.equals("")){
break;
}
}
}
}
sc.close();//scanner closed
Collections.reverse(ingrList);//reverse method reverses order of elements in ingrList
int ingr1 = ingrList.size() - 1;
ingrList.remove(ingr1);
}//ingrReader
static ArrayList<Double> SeperatorImperialList = new ArrayList<Double>();//ArrayList for seperated ingredients created
/**
* Seperates ingredient quantitys from ingredints list and adds to seperated list
*/
public static void ingrSeperator(){
double ingr2 = 0;
for(int i = 0; i <ingrList.size(); i++){
String split [] = ingrList.get(i).split(" ");
ingr2 = Double.parseDouble(split[0]);
String str = String.format("%1.2f", ingr2);
ingr2 = Double.valueOf(str);
SeperatorImperialList.add(ingr2);
}
}//end ingrSeperator
static int unit;
/**
* Gets choice of imperial or metric
*/
public static void choice() throws Exception{
Scanner sc = new Scanner(System.in);
System.out.println("Use imperial(1) or metric(2) units");
System.out.print("Enter 1 or 2: ");//serving size enetered
unit = sc.nextInt();
if (unit == 1){
divideImperial();
}
else{
converter();
}
sc.close();//scanner closed
}//end choice
//for imperial
/**
* Gets serving size input from user and then adjusts seperated ingredinets accordingly for imperial
*/
public static void divideImperial() throws Exception{
Scanner sc = new Scanner(System.in);
System.out.print("Enter your Imperial serving size: ");//serving size enetered
int servingSize = sc.nextInt();
for(int i=0;i<SeperatorImperialList.size();i++){
SeperatorImperialList.set(i,SeperatorImperialList.get(i)*servingSize);//origanal quantiys multiplyed by new serving size
}
for(int i=0;i<SeperatorImperialList.size();i++){
SeperatorImperialList.set(i,SeperatorImperialList.get(i)/4);//multiplyed quantitys now divided by origanal serving size 4
}
mergImperial();
sc.close();//scanner closed
}//end divideImperial
static ArrayList<String> convertedList = new ArrayList<>();//ArrayList for metric ingredients created
static ArrayList<Double> SeperatedMetricList = new ArrayList<Double>();//ArrayList for seperated metric ingredients created
/**
* Converts imperial to metric
*/
public static void converter() throws Exception{
Scanner sc = new Scanner(System.in);
//convert tbsp to ml
for(int i = 0; i < ingrList .size(); i++){
//if ingrList contains tbsp replaced with ml
if(ingrList.get(i).contains("tbsp")){
convertedList.add(ingrList.get(i).replace("tbsp", "ml"));
//for(int j=0;j<ingrSeperatorList.size();j++){
//ingrSeperatorList.set(j,ingrSeperatorList.get(j)*15);
//}
}
}
//convert cup to ml
for(int i = 0; i < ingrList .size(); i++){
//if ingrList contains cup replaced with ml
if(ingrList.get(i).contains("cup")){
convertedList.add(ingrList.get(i).replace("cup", "ml"));
// for(int j=0;j<ingrSeperatorList.size();j++){
// ingrSeperatorList.set(j,ingrSeperatorList.get(j)*250);
// }
}
}
//convert tsp to ml
for(int i = 0; i < ingrList .size(); i++){
//if ingrList contains tsp replaced with ml
if(ingrList.get(i).contains("tsp")){
convertedList.add(ingrList.get(i).replace("tsp", "ml"));
// for(int j=0;j<ingrSeperatorList.size();j++){
// ingrSeperatorList.set(j,ingrSeperatorList.get(j)*5);
// }
}
}
SeperatorMetric();
sc.close();//scanner closed
}//end converter
/**
* Seperates metric list
*/
public static void SeperatorMetric() throws Exception{
double ingr2 = 0;
for(int i = 0; i <convertedList.size(); i++){
String split [] = convertedList.get(i).split(" ");
ingr2 = Double.parseDouble(split[0]);
String str = String.format("%1.2f", ingr2);
ingr2 = Double.valueOf(str);
SeperatedMetricList.add(ingr2);
divideMetric();
}
}//end SeperatorMetric
/**
* Gets serving size input from user and then adjusts seperated ingredinets accordingly for metric
*/
public static void divideMetric() throws Exception{
Scanner sc = new Scanner(System.in);
System.out.print("Enter your Metric serving size: ");//serving size enetered
int servingSize = sc.nextInt();
for(int i=0;i<SeperatedMetricList.size();i++){
SeperatedMetricList.set(i,SeperatedMetricList.get(i)*servingSize);//origanal quantiys multiplyed by new serving size
}
for(int i=0;i<SeperatedMetricList.size();i++){
SeperatedMetricList.set(i,SeperatedMetricList.get(i)/4);//multiplyed quantitys now divided by origanal serving size 4
}
mergMetric();
sc.close();//scanner closed
}//end divideImperial
/**
* Merges imperial lists together
*/
public static void mergImperial(){
System.out.print(SeperatorImperialList);
System.out.println("Imperial");
//here I would merge the ingredients list with the new serving size list
}//end mergImperial
/**
* Merges metric lists together
*/
public static void mergMetric(){
System.out.print(SeperatedMetricList);
System.out.println("Metric");
//here I would merge the metric converted ingredients list with the new serving size list
}//end mergMetric
}//end main
最佳答案
您可以使用下面的代码合并List<Double>
至 List<String>
public static List<String> merge() throws Exception{
List<String> newStringList = new ArrayList<>();
for(int i = 0; i <convertedList.size(); i++){
String split [] = convertedList.get(i).split(" ");
split[0] = SeperatedMetricList.get(i).toString();
String joinedString = String.join(" ", split);
newStringList.add(joinedString);
}
return newStringList;
}
作为旁注:声明方法和变量时请遵循命名约定。 Java naming Convetions
关于java - 如何将双数组列表与字符串数组列表合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187816/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!