добавление и вычитание строк в Java

1

Мне нужна помощь в программе, которую я должен создать. я должен создать программу, которая читает две строки любой длины, которые вводятся пользователем, и она вычитает или добавляет их вместе. Мне не разрешено преобразовывать эти строки в числа перед операцией. это то, что я получил до сих пор. Мой учитель упомянул что-то вроде преобразования строк в уни-код, чтобы добавить и вычесть их, но я понятия не имею, как это сделать, поскольку мы даже не изучили уни-код. ЗДЕСЬ МОЙ КОД:

import java.util.Scanner;
public class Number {
    private char Sign;
    private String Whole;
    private String Fraction;

    public static void main(String[] args) {
        Scanner Keyboard = new Scanner (System.in);
        System.out.println("This program adds or subtracts numbers of any lengths, please add two numbers: ");
        String num1 = Keyboard.nextLine();
        System.out.println("Enter the second number: ");
        String num2 = Keyboard.nextLine();

        String sum = " ";
        int length = num1.length();
        int carry = 0;

        public Number Add(Number RHS) {

            for (int i = length -1 ; i >= 0; i--) {
                char c1 = num1.charAt(i);
                char c2 = num2.charAt(i);

                int tempSum = (c1 - 48) + (c2 - 48) + carry;
                carry = tempSum / 10;

                int sumDigit = tempSum % 10;
                sum = (char) (sumDigit + 48) + sum;

                if (carry == 1) {
                    sum = "1" + sum;
                }
            }
        }
    }
    public Number (double n) {
        Whole = " ";
        Fraction = " ";
        if (n >= 0) {
            Sign = '+';
        }
        else 
        {
            Sign = '-';
            n = Math.abs(n);
            String numString = new Double(n).toString();
            int position = numString.indexOf(".");
        }

    }
}
  • 0
    Возможно, вы захотите заполнить нулями левую панель, чтобы они имели одинаковую длину.
  • 1
    Я, честно говоря, не мог понять вопрос, однако я чувствовал необходимость указать, что variables по соглашению записываются в camelCase и никогда не начинаются с заглавных букв, если они не являются static final константами.
Показать ещё 3 комментария
Теги:
string
unicode
add
subtract

1 ответ

2
public static String add(String as, String bs){
    ArrayList<String> BigNum = new ArrayList<>();
    int m = as.length()-1;
    int n = bs.length()-1;
    int min = m > n ? n : m ;
    int max = 0;
    String s;
    if(n  > m){
        s = bs;
        max = n;
    }else{s = as ; max = m;}

    Integer carry = 0;
    while(true){
        int a = Integer.parseInt(Character.toString(as.charAt(m)));
        int b = Integer.parseInt(Character.toString(bs.charAt(n)));
        Integer c = a + b + carry;
        if(c > 9){
            carry = 1;
            c %=10;
        }else carry = 0;

        BigNum.add(c.toString());
        n--; m--; min--; max--;

        if ( min < 0   ) {
            if(carry !=0 && max < 0 )
                BigNum.add(carry.toString());
            break;
        }
    }
    Integer c = carry;
    while(max >= 0) {
        c += Integer.parseInt(Character.toString(s.charAt(max)));
        BigNum.add(c.toString());
        c = 0;
        max--;
    }
    String s2 = "";
    for (int i = BigNum.size()-1; i >= 0; i--) {
        s2 +=BigNum.get(i);
    }
    return s2;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню