I keep encountering the error " Error: Syntax error, insert "}" to complete ClassBody"
I keep encountering the error " Error: Syntax error, insert "}" to complete ClassBody"
我知道还存在其他错误,但主要错误是应该关闭我的主要方法的括号。它要求我输入另一个括号以关闭 class 正文。我已经经历了很多次,正确地缩进并在括号中输入以关闭循环和方法,但它就是不想工作。有什么想法吗?
import java.util.Stack;
import java.util.Scanner;
public class RPNApp{
public static void main (String [] args)
{
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System.in);
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String [ ] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i <= userInput.length; i++) {
if (isNumber()) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
}
}
}
public static boolean isOperator (String userInput[i]) //userInput is the array.
{
for (int i = 0; i<userInput.length; i++) {
if (!(x.equals("*") || x.equals("+") || x.equals("-") || x.equals("/") || x.equals("%"))) {
return false;
}else {
return true;
}
}
}
public static boolean isNumber (String userInput[i])
{
for (int i = 0; i<x.length(); i++) {
char c = x.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
} return true;
}
}
我做了很多更改,我知道还存在其他错误。但是我担心的是我的方法中没有正确的参数而遇到的错误。你提到仍然有问题,我是否倾向于你注意到的语法错误?
更新代码
import java.util.Stack;
import java.util.Scanner;
public class RPNApp{
public static void main (String [] args){
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System.in);
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String [ ] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i < userInput.length; i++) {
String current = userInput[i];
if (isNumber(current)) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
System.out.println(stack.toString());
}
}
}
public static boolean isOperator (String x) { //userInput is the array.
if (!(x.equals("*") || x.equals("+") || x.equals("-") || x.equals("/") || x.equals("%"))) {
return false;
}else {
return true;
}
}
public static boolean isNumber (String x) {
for (int i = 0; i<x.length(); i++) {
char c = x.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
} return true;
}
}
在您的函数参数中,您不能使用那样的 userInput[i]。摆脱 [i] 部分,然后修复其余的其他错误。
这段代码肯定不止几个问题。但是,如果您完全在脑海中编写它而没有编译它,那么它实际上非常好!它表明您以惊人的正确方式思考问题。我不明白一个人怎么会弄错这么多细节,但整体结构是正确的。有些语法错误并不是你的错:绝对不明显为什么它应该是 array.length
而 string.length()
但同时 arrayList.size()
,这是完全不一致的混乱。
在这里,我稍微清理了一下:
import java.util.Stack;
import java.util.Scanner;
public class RPNApp {
public static void main(String[] args) {
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System. in );
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String[] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i <= userInput.length; i++) {
if (isNumber(userInput[i])) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
}
}
}
public static boolean isOperator(String userInput) {
for (int i = 0; i < userInput.length(); i++) {
char x = userInput.charAt(i);
if (!(x == '*' || x == '+' || x == '-' || x == '/' || x == '%')) {
return false;
}
}
return true;
}
public static boolean isNumber(String s) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
}
return true;
}
}
其他几点需要注意:
- 存在循环:检查
if true
,return true
循环,return false
最后。
- Forall-loops:在循环中检查
if false
,return false
,最后return true
。
- 字符和字符串不一样。字符用单引号括起来并通过
==
. 进行比较
还是错了。仔细想想为什么。并尝试不再 post 不可编译的东西。
我知道还存在其他错误,但主要错误是应该关闭我的主要方法的括号。它要求我输入另一个括号以关闭 class 正文。我已经经历了很多次,正确地缩进并在括号中输入以关闭循环和方法,但它就是不想工作。有什么想法吗?
import java.util.Stack;
import java.util.Scanner;
public class RPNApp{
public static void main (String [] args)
{
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System.in);
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String [ ] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i <= userInput.length; i++) {
if (isNumber()) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
}
}
}
public static boolean isOperator (String userInput[i]) //userInput is the array.
{
for (int i = 0; i<userInput.length; i++) {
if (!(x.equals("*") || x.equals("+") || x.equals("-") || x.equals("/") || x.equals("%"))) {
return false;
}else {
return true;
}
}
}
public static boolean isNumber (String userInput[i])
{
for (int i = 0; i<x.length(); i++) {
char c = x.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
} return true;
}
}
我做了很多更改,我知道还存在其他错误。但是我担心的是我的方法中没有正确的参数而遇到的错误。你提到仍然有问题,我是否倾向于你注意到的语法错误?
更新代码
import java.util.Stack;
import java.util.Scanner;
public class RPNApp{
public static void main (String [] args){
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System.in);
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String [ ] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i < userInput.length; i++) {
String current = userInput[i];
if (isNumber(current)) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
System.out.println(stack.toString());
}
}
}
public static boolean isOperator (String x) { //userInput is the array.
if (!(x.equals("*") || x.equals("+") || x.equals("-") || x.equals("/") || x.equals("%"))) {
return false;
}else {
return true;
}
}
public static boolean isNumber (String x) {
for (int i = 0; i<x.length(); i++) {
char c = x.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
} return true;
}
}
在您的函数参数中,您不能使用那样的 userInput[i]。摆脱 [i] 部分,然后修复其余的其他错误。
这段代码肯定不止几个问题。但是,如果您完全在脑海中编写它而没有编译它,那么它实际上非常好!它表明您以惊人的正确方式思考问题。我不明白一个人怎么会弄错这么多细节,但整体结构是正确的。有些语法错误并不是你的错:绝对不明显为什么它应该是 array.length
而 string.length()
但同时 arrayList.size()
,这是完全不一致的混乱。
在这里,我稍微清理了一下:
import java.util.Stack;
import java.util.Scanner;
public class RPNApp {
public static void main(String[] args) {
/* Scanner object which takes user input and splits each element into an array of type String*/
Scanner scan = new Scanner(System. in );
System.out.println("Please enter numbers and operators for the Reverse Polish Notation calculator.");
String scanner = scan.nextLine();
String[] userInput = scanner.split(" ");
Stack<Long> stack = new Stack<Long>();
for (int i = 0; i <= userInput.length; i++) {
if (isNumber(userInput[i])) {
Long.parseLong(userInput[i]);
stack.push(Long.parseLong(userInput[i]));
}
}
}
public static boolean isOperator(String userInput) {
for (int i = 0; i < userInput.length(); i++) {
char x = userInput.charAt(i);
if (!(x == '*' || x == '+' || x == '-' || x == '/' || x == '%')) {
return false;
}
}
return true;
}
public static boolean isNumber(String s) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (!(Character.isDigit(c))) {
return false;
}
}
return true;
}
}
其他几点需要注意:
- 存在循环:检查
if true
,return true
循环,return false
最后。 - Forall-loops:在循环中检查
if false
,return false
,最后return true
。 - 字符和字符串不一样。字符用单引号括起来并通过
==
. 进行比较
还是错了。仔细想想为什么。并尝试不再 post 不可编译的东西。