使用堆栈加法?

我想添加一对用空格分隔的数字。因此,用户输入多个以空格分隔的任意长度的数字。我为此使用 BigInteger。使用两个堆栈,每对数字必须加在一起,并且需要打印结果。例如,输出将是这样的:


10 + 10 = 20


99 + 1 = 100


1000000000000000000000000000000 + 1000000000000000000000000000000 = 2000000000000000000000000000000


我需要使用堆栈来做到这一点。这是我到目前为止所拥有的,但我不知道接下来该去哪里。


public static void main (String[] args)

{

    Stack<BigInteger> stack = new Stack<BigInteger>();

    System.out.println("Please write some pairs of numbers to add separated by a space: ");


    Scanner input = new Scanner(System.in);


    for (BigInteger number : input.nextLine().split(" "))

    {


        for (int i = 0; i < number.length(); i++) 

        {

            stack.push(number);

        }

        while (!stack.isEmpty()) {

            reverseInput += stack.pop();

        }

    }  

}


慕尼黑的夜晚无繁华
浏览 98回答 3
3回答

呼啦一阵风

你不需要内for循环。如果您尝试使用堆栈添加两个数字,您可以将它们压入堆栈,弹出并添加到结果中,例如:Stack<BigInteger> stack = new Stack<BigInteger>();System.out.println("Please write some pairs of numbers to add by a space: ");Scanner input = new Scanner(System.in);for (BigInteger number : input.nextLine().split(" ")){BigInteger result = new BigInteger("0");while (!stack.isEmpty()) {&nbsp; &nbsp; result.add(stack.pop());}System.put.println("Result : " + result);

慕工程0101907

首先,for&nbsp;(BigInteger&nbsp;number&nbsp;:&nbsp;input.nextLine().split("&nbsp;"))行不通,因为它.split()返回一个 type 的对象String[],你不能直接把Stringas 当作BigInteger.此外,您正在加倍使用 for 循环。我在上面复制的那一行,如果它按照你想要的方式工作,它将遍历你输入中的所有数字。所以不需要那个内部 for 循环。事实上,它甚至不会编译,因为BigInteger没有.length()方法。但你在正确的轨道上。您可以做的是像您已经在做的那样标记输入,并将每个元素按原样推入堆栈。因为没有必要将它们作为BigInteger.&nbsp;您可以有一个Stack<String>, 然后BigInteger在您将它们弹出以进行添加时将它们转换为。或者,将它们转换为BigInteger当您将每个推入堆栈时。

紫衣仙女

input.nextLine().split(" ");返回 a String[],您不能自动将其转换为BigInteger[],因为这会抛出 a ClassCastException。你允许十进制值吗?如果是这样,您最好将每个String元素转换为原始double表示,因为您不需要BigDecimal.由于不允许使用十进制值,因此您需要将其转换String为它的integer表示形式。for (final String s : input.nextLine().split(" ")) {&nbsp; &nbsp;final int value = Integer.parseInt(s);&nbsp; &nbsp;stack.push(value);}堆栈泛型类型将是Integer. 所以Stack<Integer>您是否考虑过用户输入错误的情况?在这种情况下,您需要处理NumberFormatException
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java