Java RPN计算器代码混淆
这是我的第二个编程类,我是Java新手。我一直在做我的第一个作业,它涉及到类和方法。我对这些话题知之甚少,发现自己迷失了方向。我的作业要求我创建一个RPN计算器,要求用户输入两个数字和一个运算符。计算器对这两个数字执行运算,并要求再输入一个数字和一个运算符。然后,计算器使用第一组的结果,并使用刚刚输入的新数字执行另一个操作。当用户输入字母时,程序结束。我附上我的代码(原油)。我需要理解方法和编码一样多的帮助。请尽快帮助我,我想学习这个。感谢您的帮助Java RPN计算器代码混淆,java,class,methods,Java,Class,Methods,这是我的第二个编程类,我是Java新手。我一直在做我的第一个作业,它涉及到类和方法。我对这些话题知之甚少,发现自己迷失了方向。我的作业要求我创建一个RPN计算器,要求用户输入两个数字和一个运算符。计算器对这两个数字执行运算,并要求再输入一个数字和一个运算符。然后,计算器使用第一组的结果,并使用刚刚输入的新数字执行另一个操作。当用户输入字母时,程序结束。我附上我的代码(原油)。我需要理解方法和编码一样多的帮助。请尽快帮助我,我想学习这个。感谢您的帮助 import java.util.Scanne
import java.util.Scanner;
public class RPNCalc
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
double v1, v2;
String operator = keyboard.nextLine();
char symbol = operator.charAt(0);
System.out.print("Enter a value v1: ");
v1 = keyboard.nextDouble();
System.out.println();
System.out.print("Enter a value v2: ");
v2 = keyboard.nextDouble();
System.out.println();
System.out.print("Enter one of the valid operators +, -, *, /, nCr,: ");
operator = keyboard.nextLine();
switch (symbol)
{
case'+':
sum.writeOutput();
break;
case'-':
minus.writeOutput();
break;
case'*':
times.writeOutput();
break;
case'/':
divide.writeOutput();
break;
case'q':
System.out.println("Your last result was " );
default:
System.out.println("You must choose an appropriate operator .");
}
}
double value1, value2;
int n;
public static double sum(double value1,double value2)
{
double newSum = value1 + value2;
return newSum;
}
public static double minus(double value1, double value2)
{
double newMinus = value1 - value2;
return newMinus;
}
public static double times(double value1, double value2)
{
double newTimes = value1 * value2;
return newTimes;
}
public static double divide(double value1, double value2)
{
double newDivide = value1 / value2;
return newDivide;
}
}
您将函数名视为某个类的对象。这甚至可以编译吗 当用户键入“q”时,您希望退出程序 您首先读取开头的运算符。为什么? 您需要将程序的主体封装在一个循环中 我会给你写几行,但是大部分的修改留给你作为练习
double result;
System.out.print("Enter the first value");
result = keyboard.nextDouble();
boolean done = false;
while (!done) {
System.out.println("Enter a value");
v1 = keyboard.nextDouble();
System.out.print("Enter one of the valid operators +, -, *, /, nCr,: ");
operator = keyboard.nextLine();
symbol = operator.charAt(0);
switch (symbol) {
case '+':
result = sum(result, v1);
break;
...
case 'q':
System.out.println("Your last result was " + result);
done = true;
break;
}
}
嗯。我们开始吧。我对你的程序做了一点修改。以下是修改程序时出现的问题。 1.在任何类中都没有“writeOutput()方法”,因此我必须删除这段代码。 2.必须引入一个while循环,使其成为一个迭代过程。 3.读取运算符字符串后,向下移动operator.charAt(0)方法 由于您使用的是switch语句,因此无法将运算符值与“nCr”字符串值进行比较。要使用此语句,必须使用equals()方法进行字符串比较 最后但并非最不重要的一点是,操作的结果应该是下一轮计算的输入之一。这意味着第一次操作的结果将被传递到下一次操作的第一个参数中
import java.util.Scanner;
public class RPNCalc
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
double v1, v2;
// String operator = keyboard.nextLine();
// char symbol = operator.charAt(0);
char operator = ' ';//First time around, set this to an something other than 'q'
String operatorString = " ";
System.out.print("Enter a value v1: ");
v1 = keyboard.nextDouble();
System.out.println();
while(operator != 'q')
{
System.out.print("Enter a value v2: ");
v2 = keyboard.nextDouble();
System.out.println();
System.out.print("Enter one of the valid operators +, -, *, /, nCr,: ");
operatorString = keyboard.next();//nextLine() doesn't wait until the user hit enter
operator = operatorString.charAt(0);
switch (operator)
{
case'+':
v1 = sum(v1, v2);
System.out.println(v1);
break;
case'-':
v1 = minus(v1, v2);
System.out.println(v1);
break;
case'*':
v1 = times(v1, v2);
System.out.println(v1);
break;
case'/':
v1 = divide(v1, v2);
System.out.println(v1);
break;
case'q':
System.out.println("Your last result was " );
default:
System.out.println("You must choose an appropriate operator .");
}
}
}
double value1, value2;
int n;
public static double sum(double value1,double value2)
{
double newSum = value1 + value2;
return newSum;
}
public static double minus(double value1, double value2)
{
double newMinus = value1 - value2;
return newMinus;
}
public static double times(double value1, double value2)
{
double newTimes = value1 * value2;
return newTimes;
}
public static double divide(double value1, double value2)
{
if (value2 == 0)
{
System.out.println("Division by Zero. Try again");
return value1;
}
double newDivide = value1 / value2;
return newDivide;
}
}
我收到4个错误,说明编译器找不到符号。它已附加。我不知道我是否正确执行此操作,以及它是否会提供我所寻求的结果。我是否应该创建一个带有类描述的单独java文件?同样,我是编程新手。RPNCalc.java:25:错误:找不到符号和。writeOutput()什么是
sum.writeOutput();
?我看到的唯一定义的sum
是一个函数,函数不能有成员,而且我没有看到在任何地方定义的writeOutput()
函数,所以这是两个错误。我觉得它是一个命令(方法)为了在屏幕上显示sum的值。请原谅我粗俗的编程技巧,我是一个新手。根据您对这两个错误的建议,我相信我的代码应该引用下面列出的函数中的newSum?您是否使用任何类型的IDE,或者您是否使用类似于记事本的东西编写代码?建议在y中使用Eclipse或Netbeans我们的javaprojects,开发环境非常好,您将更快地学习,因为它会指出您所做的错误。不,文件未编译,我收到4个错误,全部声明为RPNCalc。java:25:error:找不到符号和。writeOutput();^symbol:variable sum location:class RPNCalc^抱歉,我没有完成我的语句。我原来有一个完全不同的程序,它被封装在do while语句中,但被指示更改它。虽然我与导师一起解决了这个问题,但我感谢您的帮助。这很容易理解。再次感谢。