我正在研究需要計算2個大整數的總和而不使用java中的biginteger類的程序。我卡在我的for循環計算總和。我得到一個額外的0,所以30 + 30 = 600.嘗試添加2個數組時額外的0位
我很確定這是因爲我錯誤地循環訪問數組。我需要去相反的方式(從右側開始,就像你添加數字時一樣),但我似乎無法修復它,沒有得到數組索引錯誤。
這裏是我的代碼:
main:
import java.util.Scanner;
public class testLargeInteger
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String string1;
String string2;
int exp =0;
System.out.print("Enter the first integer: ");
//Store up the input string 「string1」 entered by the user from the keyboard.
string1 = input.next();
LargeInteger firstInt = new LargeInteger(string1);
System.out.print("Enter the second integer: ");
string2 = input.next();
//Store up the input string 「string2」 entered by the user from the keyboard.
LargeInteger secondInt = new LargeInteger(string2);
System.out.print("Enter the exponential integer: ");
//Store up the input integer 「exp」 entered by the user from the keyboard.
exp = input.nextInt();
LargeInteger sum = firstInt.add(secondInt);
System.out.printf ("First integer: %s \n", firstInt.display());
System.out.println("Second integer: " + secondInt.display());
System.out.println(" Exponent: " + exp);
System.out.printf (" Sum = %s \n", sum.display());
}
}
大整數:
public class LargeInteger {
private int[] intArray;
//convert the strings to array
public LargeInteger(String s) {
intArray = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10); // in base 10
}
}
public LargeInteger(int[] array) {
intArray = array;
}
//display the strings
public String display() {
String result="";
for (int i = 0; i < intArray.length; i++) {
result += intArray[i];
}
return result.toString();
}
//get first array
public int[] getIntArray() {
return intArray;
}
//ADD method to add 2 arrays together
public LargeInteger add(LargeInteger secondInt){
int[] otherValues = secondInt.getIntArray();
int maxIterations = Math.min(intArray.length, otherValues.length);
int currentResult; //to store result
int[] resultArray = new int[Math.max(intArray.length, otherValues.length) +1 ];
int needToAdd = 0; //to store result should be added next step
for(int i = 0; i < maxIterations; i++) {
currentResult = intArray[i] + otherValues[i];
resultArray[i] = currentResult % 10 + needToAdd; //if more than 9 its correct answer
needToAdd = currentResult/10; //this is what you need to add on next step
}
resultArray[Math.max(intArray.length, otherValues.length) ] = needToAdd;
return new LargeInteger(resultArray);
}
}
我試圖改變的for循環總和是這樣的:
for(int i = maxIterations; i >= 0; i--)
投票結束:要求陌生人通過檢查發現代碼中的錯誤不是生產性的。您應該使用調試器或打印語句來識別(或至少隔離)問題,然後回來一個更具體的問題(一旦您將其縮小到10行[測試案例](http:///sscce.org))。 – 2012-03-25 20:20:24
Java中的數組基於0。數組的有效索引是[0,array.length - 1]。 – Jeffrey 2012-03-25 20:22:44
我沒有看到它是真的要發現一個錯誤..雖然也許是..我只是不知道我是否在正確的軌道,如果它肯定我需要循環相反的方式.. – Sackling 2012-03-25 20:22:51