Я почти закончил с моей программой, но мне нужно сделать мой код более удобным для пользователя.Создание удобного базового калькулятора java
Как я могу заставить его только просить пользователя ввести операцию и только одну цифру, когда речь идет о журналах, cos, sin, tan и square root? Пока он просит пользователя ввести две цифры и операцию, первая цифра никогда не имеет значения.
package calculator2;
import java.util.Scanner;
public class Calculator2 {
public static void main(String[] args) {
System.out.println("Addition");
System.out.println("Subtraction");
System.out.println("Division");
System.out.println("Multiplication");
System.out.println("Natural Log");
System.out.println("Exponent");
System.out.println("cos");
System.out.println("sin");
System.out.println("tan");
System.out.println("root");
System.out.println("pactorial");
System.out.println("compitation");
System.out.println("-------------------------");
Scanner scan = new Scanner(System.in);
String userInput ;
do{
calculator();
System.out.println("Would you like to do another calculation. Enter Y for yes or N for no");
userInput = scan.nextLine();
}while (userInput.equalsIgnoreCase("y"));
System.out.println("Goodbye");
}
public static void calculator(){
Scanner user = new Scanner(System.in);
System.out.println("Enter a calculation. With a space in between digit and opertation. ");
System.out.println("Like 1 + 1 . For log, first press 0, then operator 'log' follow by digit you wish to calculate.");
double value1 = user.nextDouble();
String op = user.next();
double value2 = user.nextDouble();
if (op.equals("+")){
Addition(value1,value2);
}if (op.equals("-")){
Subtraction(value1,value2);
}if(op.equals("/")){
Division(value1,value2);
}if(op.equals("*")){
Multiplication(value1,value2);
}if(op.equals("^")){
Exponent(value1,value2);
}if(op.equals("log")){
NaturalLog(value1);
}if(op.equals("cos")){
cos(value2);
}if(op.equals("sin")){
sin(value2);
}if(op.equals("tan")){
tan(value2);
}if(op.equals("root")){
root(value2);
}if(op.equals("patory")){
patory(value1, value2);
}if(op.equals("comb")){
comb(value1 , value2);
}else{
}
}
public static void Addition (double value1, double value2){
double Sum= value1 + value2;
System.out.println(Sum);
}
public static void Subtraction (double value1 , double value2){
double diff = value1 - value2;
System.out.println(diff);
}
public static void Division(double value1 , double value2){
double div = value1/value2;
System.out.println(div);
}
public static void Multiplication(double value1, double value2){
double mult = value1 * value2;
System.out.println(mult);
}
public static void Exponent(double value1 , double value2){
double exp = Math.pow(value1, value2);
System.out.println(exp);
}
public static void NaturalLog(double value2){
double logs = Math.log(value2);
System.out.println(logs);
}
public static void cos(double value2){
double cas = Math.cos(value2);
System.out.println(cas);
}
public static void sin(double value2){
double sins = Math.sin(value2);
System.out.println(sins);
}
public static void tan(double value2){
double tans = Math.tan(value2);
System.out.println(tans);
}
public static void root(double value2){
double sqroot = Math.sqrt(value2);
System.out.println(sqroot);
}
public static void patory(double value1 , double value2){
double denominator =1;
double numarator = 1;
for(double i = value1; i>=1; i--){
numarator *= i;
}
for(double j = value1 - value2; j>= 1; j--){
denominator *= j;
}
System.out.println(numarator/denominator);
}
public static void comb(double value1, double value2){
double denominator1 = 1;
double denominator2 = 1;
double numarator = 1;
for(double i =value1; i >=1; i--){
numarator *= i;
}
for(double j = value2; j>=1; j--){
denominator1 *= j;
}
for(double j = value1 - value2; j>=1; j--){
denominator2 *= j;
}
System.out.println(numarator/(denominator1*denominator2));
}
}
Я не знаю, почему я проголосовал. это то, что вопрос немой или что. по крайней мере, объясните. – adonis
Вероятно, это сочетание того факта, что ваше форматирование было испорчено, и тот факт, что большинство вашего кода не имеет отношения к проблеме. См. [Mvce] (http://stackoverflow.com/help/mcve) – Laurel
, что вы делаете «Сканирование сканирование = новый сканер (System.in);' дважды, что не нужно. Кроме того, вызов '.next()' не внутри блока try/catch может привести к сбою вашей программы. – alfasin