您能帮我使用我的循环计算器吗?

问题描述 投票:-1回答:3

我正在为学校项目制作计算器。我的问题是,当我输入例如在1处的op = sc.next().charAt(0);中,即使不是真的,第一个if语句也会执行其主体。同样,它不会在循环开始时返回,但是程序会结束。我对Java还是很陌生,所以这就是为什么我在这里。另外,我愿意提出任何改善建议。 :)

谢谢!


import java.util.Scanner;

public class Kalkulacka {
    public static void main(String[] args) {

        System.out.println("Vitajte v programe na výpočet jednoduchých matematických príkladov!");
        Scanner sc= new Scanner(System.in);
        double a;
        char op = 0;
        double b;
        double priklad = 0;
        int i=0;
        System.out.println("Zadajte číslo");

        a= sc.nextDouble();

        priklad= a;



        while (true) {

            if (i<1) {
                System.out.println("Zvoľte si operátora:");
                System.out.println("1- +");
                System.out.println("2- -");
                System.out.println("3- *");
                System.out.println("4- /");

                op = sc.next().charAt(0);

                if (op != 1 && op != 2 && op != 3 && op != 4) {
                    System.out.println("Zadali ste nesprávne číslo");
                    return;
                }
            }

            if (i>=1) {
                System.out.println("Zvoľte si operátora:");
                System.out.println("1- +");
                System.out.println("2- -");
                System.out.println("3- *");
                System.out.println("4- /");
                System.out.println("5- =");

                op= sc.next().charAt(0);

                if (op!=1 && op!=2 && op!=3 && op!=4 && op!=5) {
                    System.out.println("Zadali ste nesprávne číslo");
                    return;
                }

                if (op==5) {
                    break;
                }
            }

            System.out.println("Zadajte číslo");

            b= sc.nextDouble();

            if (i<1) {
                switch (op) {
                    case 1:
                        priklad = a + b;
                    case 2:
                        priklad = a - b;
                    case 3:
                        priklad = a * b;
                    case 4:
                        priklad = a / b;
                }
            }

            else {
                switch (op) {
                    case 1:
                        priklad = priklad + b;
                    case 2:
                        priklad = priklad - b;
                    case 3:
                        priklad = priklad * b;
                    case 4:
                        priklad = priklad / b;
                }
            }
            i=i++;
        }

        System.out.println("Výsledok je: "+priklad);
    }
}```
java loops if-statement while-loop char
3个回答
2
投票

一个字符不过是一个数字。这就是为什么您可以像在char检查中一样比较intop != 1的原因。但是,'1'的适当数字-所谓的ASCII码-不是1,而是4949当然不等于1,因此您的条件op != 1匹配。

要么检查op == 49,要么只检查op == '1'(对于进一步的检查,您肯定需要适当的ASCII码50、51和52)。


2
投票

我认为是]

                op = sc.next().charAt(0);

            if (op != 1 && op != 2 && op != 3 && op != 4) {
                System.out.println("Zadali ste nesprávne číslo");
                return;
            }

Op是一个字符,因此当您从用户那里获得输入时,它是'1','2','3','4',但是您检查与1,2,3,4是否相等。条件始终为true,并且程序返回。


1
投票

我的问题是,当我输入1 at op = sc.next()。charAt(0);,第一个if语句起作用,即使它不是真的。

© www.soinside.com 2019 - 2024. All rights reserved.