一个带有 switch case 的简单计算器。

huangapple 未分类评论71阅读模式
标题翻译

a simple calculator with switch case

问题

以下是翻译好的代码部分:

import java.util.Scanner;
import java.math.*;

public class Calculatrice {
    public static void main(String args[]) {
        double num1;
        Scanner keyb = new Scanner(System.in);
        System.out.println("Simple Calculator");
        System.out.print("Current value: ");
        num1 = keyb.nextDouble();

        System.out.print("Enter an operator: ");
        String i;
        i = keyb.nextLine();
        double result = 0;

        switch (i) {
            case "+":
                result = result + num1;
                break;
            case "-":
                result = result - num1;
                break;
            case "*":
                result = result * num1;
                break;
            case "/":
                result = result / num1;
                break;
            case "sqrt":
                result = Math.sqrt(result);
                break;
            case "c":
                result = 0;
                break;
            case "x":
                System.exit(0);
                break;
            case "^":
                result = Math.pow(result, num1);
                break;
            default:
                System.out.println("Accepted values: +, -, *, /, ^, sqrt, c, x");
                break;
        }
        keyb.close();
    }
}
英文翻译

I have a problem. In class we have to do a simple calculator, and my problem is that I wanna write a number, then the operator, then again a number. Somehow my code doesn't work. I can enter the first number but then my program closes :/ Why is that? Is it because I used the data type string?

Thanks to everyone in advance!!

Here is my code:

import java.util.Scanner; 
import java.math.*;
public class Calculatrice 
{
	public static void main(String args[]) 
	{
		double num1;
		Scanner keyb = new Scanner(System.in);
		System.out.println("Calculette Simple");
		System.out.print("Valeur actuelle: ");
		num1 = keyb.nextDouble();
	
		System.out.print("Entrez un operateur: ");
		String i;
		i = keyb.nextLine();
		double result = 0;
		
		switch (i)
		{
			case "+":
			result = result + num1;
			break;
			case "-":
			result = result - num1;
			break;
			case "*":
			result = result * num1;
			break;
			case "/":
			result = result / num1;
			break;
			case "sqrt":
			result = Math.sqrt(result);
			break;
			case "c":
			result = 0;
			break;
			case "x":
			System.exit(0);
			break;
			case "^":
			result = Math.pow(result,num1);
            break;
			default:
			System.out.println("Valeurs acceptees: +, -, *, /, ^, sqrt, c, x");
            break;
			
		}
		keyb.close();
}
    }

答案1

得分: 0

你需要一个循环:需要从命令行读取数据,直到满足条件为止,以便读取多个字符串(数字、操作符或其他任何内容)。然后尝试类似这样的代码:

// 你的扫描器初始化
i = keyb.nextLine();
double result = 0;
while (!i.equals("end")) { // 我使用这个作为退出条件,但你可以使用任何你想要的条件
    switch (i) {
        case "+":
            result = result + num1;
            break;
        case "-":
            result = result - num1;
            break;
        case "*":
            result = result * num1;
            break;
        case "/":
            result = result / num1;
            break;
        case "sqrt":
            result = Math.sqrt(result);
            break;
        case "c":
            result = 0;
            break;
        case "x":
            System.exit(0);
            break;
        case "^":
            result = Math.pow(result, num1);
        default:
            System.out.println("Accepted values: +, -, *, /, ^, sqrt, c, x");
    }
}
// 关闭扫描器

请注意,我只翻译了你提供的代码部分,其他内容均未包含在内。

英文翻译

You need a loop: you need to read data from command line until a condition is verified, in order to read more then one string (number, operator or whatever you want). Then try something like this :

// your initialization of scanner
i = keyb.nextLine();
double result = 0;
while (!i.equals("end")) { // I use this as exit condition, but you can use whatever you want
	switch (i) {
		case "+":
			result = result + num1;
			break;
		case "-":
			result = result - num1;
			break;
		case "*":
			result = result * num1;
			break;
		case "/":
			result = result / num1;
			break;
		case "sqrt":
			result = Math.sqrt(result);
			break;
		case "c":
			result = 0;
			break;
		case "x":
			System.exit(0);
			break;
		case "^":
			result = Math.pow(result, num1);
		default:
			System.out.println("Valeurs acceptees: +, -, *, /, ^, sqrt, c, x");

	}
}
// close scanner

答案2

得分: 0

你需要一个带有退出条件的循环(我相信在输入中是 'x')
类似于

while (!"x".equals(i)) {
   switch (i)
   ...
}
英文翻译

you need some loop with exit condition (I belive it's 'x' in input)
something like

while (!"x".equals(i)) {
   switch (i)
   ...
}

答案3

得分: 0

该程序接收用户输入的两个数字的值然后要求用户输入操作符+-*/),基于输入的操作符程序使用 switch case 在输入的数字上执行所选的操作

import java.util.Scanner;

public class JavaExample {

    public static void main(String[] args) {

        double num1, num2;
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个数字:");

        /* 我们使用 double 数据类型,以便用户可以输入整数和浮点数值 */
        num1 = scanner.nextDouble();
        System.out.print("请输入第二个数字:");
        num2 = scanner.nextDouble();

        System.out.print("请输入运算符(+、-、*、/):");
        char operator = scanner.next().charAt(0);

        scanner.close();
        double output;

        switch(operator)
        {
            case '+':
                output = num1 + num2;
                break;

            case '-':
                output = num1 - num2;
                break;

            case '*':
                output = num1 * num2;
                break;

            case '/':
                output = num1 / num2;
                break;

            /* 如果用户输入的操作符不是 +、-、* 和 /,则向用户显示错误消息 */
            default:
                System.out.printf("您输入了错误的操作符");
                return;
        }

        System.out.println(num1 + " " + operator + " " + num2 + ": " + output);
    }
}
英文翻译

The program takes the value of both the numbers (entered by user) and then user is asked to enter the operation (+, -, * and /), based on the input program performs the selected operation on the entered numbers using switch case.

import java.util.Scanner;

public class JavaExample {

    public static void main(String[] args) {

    	double num1, num2;
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter first number:");

        /* We are using data type double so that user
         * can enter integer as well as floating point
         * value
         */
        num1 = scanner.nextDouble();
        System.out.print("Enter second number:");
        num2 = scanner.nextDouble();

        System.out.print("Enter an operator (+, -, *, /): ");
        char operator = scanner.next().charAt(0);

        scanner.close();
        double output;

        switch(operator)
        {
            case '+':
            	output = num1 + num2;
                break;

            case '-':
            	output = num1 - num2;
                break;

            case '*':
            	output = num1 * num2;
                break;

            case '/':
            	output = num1 / num2;
                break;

            /* If user enters any other operator or char apart from
             * +, -, * and /, then display an error message to user
             * 
             */
            default:
                System.out.printf("You have entered wrong operator");
                return;
        }

        System.out.println(num1+" "+operator+" "+num2+": "+output);
    }
}

huangapple
  • 本文由 发表于 2020年1月30日 18:30:11
  • 转载请务必保留本文链接:https://java.coder-hub.com/59983922.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定