Skapelse Ответов: 1

Можете ли вы помочь мне улучшить этот код? (Ява)


Всем привет, я здесь новичок, поэтому мне очень жаль, если я публикую это не в той категории. Я начинающий программист и пытаюсь стать лучше. Сейчас я пишу небольшой инструмент, который решает математические задачи. Я был бы очень признателен, если бы вы сказали мне, что я делаю неправильно и как я мог бы улучшить свой код (инструмент работает). Проект еще не закончен, и до сих пор я сделал только простой калькулятор. Однако я намерен построить другие функции так же, как этот простой калькулятор, так что любая обратная связь будет приятной.

Что я уже пробовал:

Это текущий код, причина, по которой все это находится внутри цикла while, заключается в том, что я хочу, чтобы пользователь мог использовать инструмент калькулятора несколько раз без необходимости запускать приложение каждый раз.

import java.util.Scanner;
public class NumberHeron
{
	public static void main(String[] args)
	{
		System.out.println("Choose your prefered tool\n");
		System.out.println("1. Simple Calculator\n");
		Scanner scanner = new Scanner(System.in);
		int tool = scanner.nextInt();
		switch(tool)
		{
			case 1:
		    while(tool == 1)
			{
			try {
			System.out.println("Enter two numbers");
			double numOne = scanner.nextDouble();
			double numTwo = scanner.nextDouble();
			System.out.println("Enter an operation, valid ones are: +, -, *, /");
			System.out.println("Type (q) to exit");
			Scanner s = new Scanner(System.in);
			String operation = s.nextLine();
			if (operation.equals("+"))
			{
				SimpleCalculator simpleCalc = new SimpleCalculator();
				double result = simpleCalc.add(numOne, numTwo);
				System.out.println("The result is " + result);
			}
			else if (operation.equals("-"))
			{
				SimpleCalculator simpleCalc = new SimpleCalculator();
				double result = simpleCalc.substract(numOne, numTwo);
				System.out.println("The result is " + result);
			}
			else if (operation.equals("*"))
			{
				SimpleCalculator simpleCalc = new SimpleCalculator();
				double result = simpleCalc.multiply(numOne, numTwo);
				System.out.println("The result is " + result);
			}
			else if (operation.equals("/"))
			{
				SimpleCalculator simpleCalc = new SimpleCalculator();
				double result = simpleCalc.divide(numOne, numTwo);
				System.out.println("The result is " + result);
			}
			else if (operation.equals("q"))
			{
				break;
			}
		  } catch(Exception ex) { ex.printStackTrace(); break; }
		}
		}
		scanner.close();
	}
}
class SimpleCalculator 
{
	public static double add(double valueOne,double valueTwo)
	{
		double result = valueOne + valueTwo;
		return result;
	}
	public static double substract(double valueOne, double valueTwo)
	{
		double result = valueOne - valueTwo;
		return result;
	}
	public static double multiply(double valueOne, double valueTwo)
	{
		double result = valueOne * valueTwo;
		return result;
	}
	public static double divide(double valueOne, double valueTwo)
	{
		double result = valueOne / valueTwo;
		return result;
	}
}

Mohibur Rashid

в вашем исходном коде есть несколько проблем.
1. Алгоритм неверен
2. Вы объявили функцию в Симплекс-вычислитель как статическое но, вы пытаетесь получить к ним доступ через объект. Что не имеет особого смысла. Вот почему вы должны получить какое-то предупреждение.

SimpleCalculator.add(1.0, 2.0)
все будет просто отлично

Skapelse

я немного запутался. Что значит, алгоритм неверен? Я хочу, чтобы пользователь вводил цифры. Спасибо!

1 Ответов

Рейтинг:
6

Richard MacCutchan

if (operation.equals("+"))
{
	SimpleCalculator simpleCalc = new SimpleCalculator();
	double result = simpleCalc.add(numOne, numTwo);
	System.out.println("The result is " + result);
}
else if (operation.equals("-"))
{
	SimpleCalculator simpleCalc = new SimpleCalculator();
	double result = simpleCalc.substract(numOne, numTwo);
	System.out.println("The result is " + result);
}

Вы можете упростить этот блок, удалив лишние строки кода. И вам не нужен экземпляр SimpleCalculator как и все его методы static.
double result =0.0;
if (operation.equals("+"))
{
    result = SimpleCalculator.add(numOne, numTwo);
}
else if (operation.equals("-"))
{
    result = SimpleCalculator.substract(numOne, numTwo);
}
// etc for other operations
System.out.println("The result is " + result);


Для лучшего обучения на Java я рекомендую Учебные Пособия По Java™ [^].