JAVA—在while循环之外的何处打印整数?

JAVA—在while循环之外的何处打印整数?,java,exception,printing,while-loop,Java,Exception,Printing,While Loop,变量在我的语言中,但这并不影响我的问题。 不要介意初始化部分,变量不是英文的。 我的问题是:在我的程序中,我必须在哪里打印结果。我已经尝试过for循环,但例如,程序第一次通过循环时,结果是6,然后下一次结果是4,然后下一次是0,下一次是16 它以这种形式打印出来:初始数字为vish=16,shir=29,n=3 6. 4. 0 16 。。我想实现的是它打印出26。。实际上是6+4+0+16 。。有时java会在线程main java.lang.arithmetricexception:/by z

变量在我的语言中,但这并不影响我的问题。 不要介意初始化部分,变量不是英文的。 我的问题是:在我的程序中,我必须在哪里打印结果。我已经尝试过for循环,但例如,程序第一次通过循环时,结果是6,然后下一次结果是4,然后下一次是0,下一次是16

它以这种形式打印出来:初始数字为vish=16,shir=29,n=3

6. 4. 0 16 。。我想实现的是它打印出26。。实际上是6+4+0+16


。。有时java会在线程main java.lang.arithmetricexception:/by zero

中报告异常,您可以在完成所有计算以获得正确结果后将其打印出来。 在你的例子中,你有stranica2的计算,它可以是空的。你应该检查一下 如果斯特拉尼卡=0{继续;}

你的解决方案的问题是我没有止境。i开始等于n,然后向下,while循环中的检查也适用于小于n的数字,这意味着您有一个无限循环。

像sum+=值一样计算总和;在循环中,当循环结束时,打印总和

更正代码:

if (vish % stranica2 == 0 && shir % stranica2 != 0) {

   ostanek2 = vish % stranica2;  // here ostanek2 = 0
   ostala_vish = vish - ostanek2;
   plosce_vish = ostala_vish / stranica2; // so here ostala_vish is divided by zero


   ostanek1 = shir % stranica1;
   ostala_shir = shir - ostanek1;
   plosce_shir = ostala_shir / stranica2;
   shir = ostanek1;

   ploscice = plosce_shir*plosce_vish;

 }
因为,循环中每次迭代后的ploscice值为:

6. 4. 0 0不是16 结果是10

最后但并非最不重要:

你为什么这么做

10
stranica1不是等于0吗?你怎么会得到ostanek1值?它会给你一个被零除的例外

将其修复为:

ostanek1 = shir % stranica1;

你的打印报表在哪里?
import java.util.*;
public class Example {

    public static void main(String[] args) {
        // TODO code application logic here
        Scanner beri = new Scanner(System.in);

        long vish = 16;
        long shir = 29;
        long n = 3;

        long del1 = 0;
        long del2 = 0;
        long stranica1 = 0;
        long stranica2 = 0;

        long ostanek1 = 0;
        long ostanek2 = 0;
        long ostala_shir = 0;
        long plosce_shir = 0;
        long ostala_vish = 0;
        long plosce_vish = 0;
        long ploscice = 0;
        long del_dva = 0;
        long del_n = 0;

        long i = n;

        //declare and initialize the following variable named sum
        long sum = 0;

        //don't use i<=n since this is a decrementing loop. Use i >= 0 instead
        while (i >= 0) {

            del_dva = 2;
            del_n = i;
            stranica2 = (long) Math.pow(del_dva, del_n);

            if (vish % stranica2 == 0 && shir % stranica2 != 0) {

                ostanek2 = vish % stranica2;
                ostala_vish = vish - ostanek2;
                plosce_vish = ostala_vish / stranica2;

                ostanek1 = shir % stranica2; // you made a mistake here. 
                //If you write stranica1, then stranica1 = 0, 
                //and that's why you get the divide by zero exception
                ostala_shir = shir - ostanek1;
                plosce_shir = ostala_shir / stranica2;
                shir = ostanek1;

                ploscice = plosce_shir * plosce_vish;

            }

            //Do the following to get the sum of ploscice
            sum = sum + ploscice;
            i--;

        }
        //println should be outside the while loop. Same applies for for loop
        System.out.println("The sum is = " + sum);
    }

}
10
ostanek1 = shir % stranica1;
ostanek1 = shir % stranica2;