私のプログラムはほとんど終わっていますが、コードをより使いやすくする必要があります。ユーザーフレンドリーな基本的な電卓の作成Java
ログ、コサイン、sin、tan、平方根については、操作を入力するようにユーザーに尋ねることができますか?これまでのところ、2桁の数字を入力するようにユーザーに求めていましたが、最初の数字は決して問題にはなりません。
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
おそらく、あなたの書式がすべて乱れていることと、コードの大部分が問題に無関係であるという事実の組み合わせでしょう。あなたは 'Scanner scan = new Scanner(System.in);を2回実行していますが、これは不要です([mvce](http://stackoverflow.com/help/mcve) – Laurel
参照)。さらに、try/catchブロック内にない '.next() 'を呼び出すと、プログラムがクラッシュする可能性があります。 – alfasin