gpt4 book ai didi

java - CodeAbbey 挑战 14 数据输入问题?

转载 作者:行者123 更新时间:2023-12-01 10:19:37 24 4
gpt4 key购买 nike

    int fnum = Integer.parseInt(split[0]);// holds 5
//split[] holds each line of the file.
double sum = fnum;// sum = 5
double i = 0.0;
double last = 0.0;



for(int j = 1; j<(split.length-1);j++)
{
i = Integer.parseInt(split[j].replaceAll("[^0-9]", ""));

if(split[j].charAt(0) == '*')
{
sum = sum * i;
}
else if(split[j].charAt(0) == '/')
{
sum = sum / i;

}
else if(split[j].charAt(0) == '+')
{
sum = sum + i;

}
else if(split[j].charAt(0) == '-')
{
sum = sum - i;

}
else if(split[j].charAt(0) == '%')
{
sum = sum % i;

}

}
System.out.println(sum);// Prints 1.0
}
}
/*
Actual Data File Imported

5
+ 3
* 7
+ 10
* 2
* 3
+ 1
% 11
Answer should be : 1
*/

好吧,我的代码可能看起来很乱,但我很努力。放弃了几次但又尝试了。我的问题是对于较小的数据集,例如我导入并在最后几行代码中注释掉的数据集,工作正常。但对于更大的数据集,这都是错误的,为什么呢?我尝试将所有数据集加倍以获得更大的值,但不知何故这是错误的?到目前为止我还是一个初学者,任何帮助将不胜感激。
为了更具体地说明我导入文件的问题,我将其全部设为字符串,逐行,然后将其全部添加到字符串数组中,因此每一行都在字符串数组中,例如 split[1] 将打印 + 3现在,我将 if 循环中的数字和符号隔离在 for 循环中,以遍历所有集合。现在 if 循环捕获符号,然后进行适当的算术运算。但怎么没有呢?我使用 double 而不是 int 来求和。这没有帮助。我相信 if 语句可能是问题所在。

最佳答案

不确定您是否仍然需要答案,但是这里有一个提示:该特定练习的重点是学习模算术,也就是说,如果您将所有数字的余数相加/相乘,您将得到与使用给定数字相同的答案,也就是说,如果您应用所有这些都与 % 之后的数字相同。例如:

14
+ 78
* 9
* 3
+ 4
% 3

经过所有应用运算后,% 3 以上的数字结果为 2488。所以 2488 % 3 = 1。

因此,如果您将 % 3 应用于每个数字(包括第一个数字),您会得到相同的答案,当然对它们的余数使用相同的运算,并将总和再次除以 3。

14 % 3 = 2
78 % 3 = 0
9 % 3 = 0
3 % 3 = 0
4 % 3 = 1

因此,您得到 2 + 0 * 0 * 0 + 1,等于 1。1 % 3 = 12488 % 3 = 1 相同。

我的观点是,你应该对每一个数字应用模,这样你就会得到很小的数字,甚至不会有你遇到问题的大数字。希望这足够清楚并希望它有所帮助。

关于java - CodeAbbey 挑战 14 数据输入问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688580/

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