gpt4 book ai didi

java - 使用嵌套 For 循环来访问 "Add"两个包含数字值的字符串数组

转载 作者:行者123 更新时间:2023-12-02 06:25:56 32 4
gpt4 key购买 nike

我正在尝试制作一个程序,该程序需要 x 个添加剂并将它们转换为基于字符串的结果。使用 String[ ] 而不是 int[ ] 的原因是因为有些数字对于 int/long 来说太大了(并且我们不允许在这个项目中使用 BigInteger),所以我们在这个项目中坚持使用 String[ ]程序。另外:String[ ] 参数中的所有值都是 25 个零长,用数字替换最后几个零,如下所示。

例如:如果您传入一个包含三个值的字符串数组...

0000000000000000000000203

0000000000000000000000045

0000000000000000000000010

该方法会将其压缩为一个 String[ ],其值为...

0000000000000000000000258

困难的部分是解释“携带数字”,就像初等代数一样。以下是我到目前为止所得到的内容

//Every array will be 25 digits long. Mostly zeroes with the numbers to add at the 
//end
public static final int ARRSIZE = 25;

public static void addStuff(String[] stuff) {
String[] result = new String[ARRSIZE];
int[] holder = new int[ARRSIZE];
String temp = "";
int area = 0;
int carry = 0;
for (int i = 0; i < stuff.length; i++)
{
for (int j = 0; j < stuff.length; j++)
{
temp = stuff[j].substring(stuff[i].length() - 1-i, stuff[i].length()-i);
area += Integer.parseInt(temp);
if (area >= 10)
{
carry = area/10;
holder[ARRSIZE - 1-i] = area%10;
area = 0;
}
carry = 0;
}
}

//TODO: Make int[] holder -> String[] result
//Take result String[] to future method
}

我试图用这段代码做的是读取每个 String[ ] 元素的最后一个元素,将其转换为 int 以添加该行,并将最终数字存储为 String[] (结果)以便以后在以后的方法中打印。我一直不太擅长嵌套 for 循环,所以我认为会发生这种困惑。到目前为止,我已经成功地了解了逻辑,我成功地添加了最右边的列并将其存储在区域中,同时携带一个数字。从那时起我就迷失了方向。

最佳答案

只是一个简单的解决方案,您可能需要对其进行一些调整才能满足您的需求:

public static void addStuff(String[] stuff) {
if (stuff.length != result.length) {
throw new IllegalArgumentException("length does not match");
}
int carry = 0;
for (int i = stuff.length - 1; i >= 0; i--) {
int temp = Integer.parseInt(result[i]) + Integer.parseInt(stuff[i]) + carry;
carry = temp / 10;
result[i] = String.valueOf(temp % 10);
}
}

这会将给定的字符串数组添加到全局结果数组中,定义如下:

private static final String[] result = "0000000000000000000000000".split("");

如果您使用提供的号码调用它,您可以这样使用它:

addStuff("0000000000000000000000203".split(""));
addStuff("0000000000000000000000045".split(""));
addStuff("0000000000000000000000010".split(""));
System.out.println(String.join("", result));

结果将是:

0000000000000000000000258

希望有帮助。当然,您应该做更多的异常处理,但这只是一个小例子,向您展示如何解决您的问题。

关于java - 使用嵌套 For 循环来访问 "Add"两个包含数字值的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786475/

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