提问人:matthew wagner 提问时间:9/5/2021 更新时间:9/5/2021 访问量:46
无法将扫描的字符串正确输入到 2D 数组中
Unable to correctly input scanned string into 2D array
问:
我将阅读文件并编制销售人员的运行总数,以及他们对每个产品的总数和每个产品的总数。我必须将所有这些存储在 2D 数组中(不允许列表)并以某种格式打印。
文本文件记录如下:
1,4,10.20
2,2,17.20
etc
etc
第 1 列是 personID,第 2 列是产品编号,第 3 列是金额
我的代码尝试将每行拆分为一个字符串,然后进一步将每个值拆分为索引,然后将其存储在 2D 数组中。我觉得很傻,但我有转换错误。无论我做什么,我都无法以可接受的格式使数组存储量。由于某种原因,我无法将数组创建为双精度。当我尝试编译时,它返回终止。我的教授说整数应该有效,而我根本无法获得准确的求和。
package HW1;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class salesList {
public static void main(String[] args) throws FileNotFoundException{
Scanner salesList;
salesList = new Scanner(new File("C:\\Users\\mjwag\\OneDrive\\cs151/salesList.txt"));
while (salesList.hasNext()) {
Scanner file = salesList;
file.nextLine();
String line = file.nextLine();
String[] lineArray = line.split(",");
int personID = Integer.parseInt(lineArray[0]);
int product = Integer.parseInt(lineArray[1]);
int amount = Integer.parseInt(lineArray[2]);
int [][] sales = new int[4][6];
sales[personID-1][product-1] += amount;
}
}
}
答:
0赞
Pieter12345
9/5/2021
#1
在数组中同时存储整数和双精度的最简单方法是使用 ,它是 和 的超类。例如:Number
Integer
Double
Number[][] sales = new Number[4][6];
...
sales[0][0] = 1;
sales[0][1] = 4.5;
或者,正如您与教授讨论的那样,可以将双精度转换为整数并丢失小数点后的数字。这可以按如下方式完成:
double val = 4.5;
int intVal = (int) val;
评论
0赞
matthew wagner
9/5/2021
我将数组更改为 Number 数组并将其移到循环之外,但出现以下错误:对于参数类型 Number, double 未定义运算符 +=。我将金额更改为双倍并更改为parseDouble,但现在我收到上述错误
0赞
Pieter12345
9/5/2021
你可以使用 和 分别获取 和 。由于您已经知道哪些值是整数,哪些值是双精度值,因此无需检查。Number.intValue()
Number.doubleValue()
int
double
0赞
matthew wagner
9/5/2021
我想我仍然对我的代码上下文感到困惑。我创建了一个 Number 类型的数组,我只是尝试使用以下行存储信息:sales[personID-1][product-1] += amount;上述错误是我不明白的。
0赞
Pieter12345
9/5/2021
您必须执行其中一项操作,或者取决于存储的值是整数还是双精度。sales[personID-1][product-1] = sales[personID-1][product-1].intValue() + amount;
sales[personID-1][product-1] = sales[personID-1][product-1].doubleValue() + amount;
0赞
matthew wagner
9/5/2021
因此,这基本上检索了所述插槽中的最后一个双倍并将金额添加到其中?所以它应该进一步增加吗?现在,我在尝试分配增量时收到以下错误。无法调用“java.lang.Number.doubleValue()”,因为“sales[...][...]"是 null 我猜这是因为在第一行我试图从循环外部启动的 null 中拉出一个双精度?也非常感谢您到目前为止的帮助!
评论