此程序允许用户编辑其字符串。我在程序的菜单部分中的每个方法都有问题。出于某种原因,他们点亮了一个错误,我使用的是Eclispe。除了方法定义之外,其余代码完美地运行。我需要以某种方式在新方法中为菜单定义每个任务。
每个错误都是完全相同的,这个:
此行有多个标记
语法错误,插入" []"完成维度
语法错误,插入&#34 ;;"完成BlockStatements
参数shortenSpace的非法修饰符;只允许决赛
令牌上的语法错误" shortenSpace",此后需要注释 令牌
我在代码中注释了我的错误。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AuthoringAssistant {
public static Scanner scnr;
public static void main(String[] args) {
userText();
printMenu();
}
/** Get user text*/
public static void userText() {
String userText;
System.out.println("Enter a sample text:");
userText = scnr.nextLine();
System.out.println("You entered: " + userText);
return;
}
/** Print Menu*/
public static void printMenu() {
String c = "c";
String w = "w";
String f = "f";
String r = "r";
String s = "s";
String q = "q";
String menuChoice;
String userText;
Scanner in = new Scanner(System.in);
System.out.println("");
System.out.println("MENU");
System.out.println(c + " - Number of non-whitespace characters"); /** This option counts the number of characters minus whitespace */
System.out.println(w + " - Number of words"); /** This option counts the number of words */
System.out.println(f + " - Find text"); /** This option finds a user specific in word in the text */
System.out.println(r + " - Replace all !'s"); /** This option replaces all exclamation points with a period */
System.out.println(s + " - Shorten spaces"); /** This option removes all whitespace that is larger than one space */
System.out.println(q + " - Quit"); /** This quits */
System.out.println("");
System.out.println("Choose an option: ");
menuChoice = scnr.next();
return;
switch (menuChoice) {
case "c": {
public static int getNumOfNonWSCharacters(); { /** ERROR */
// case "c": whitespace
String newStr = "";
newStr = userText.trim().replaceAll(" ","");
int lenInput = newStr.length();
System.out.println("Number of non-whitespace characters: " + lenInput);
return;
}
}
break;
case "w": {
public static int getNumOfWords(); { /** ERROR */
// case "w": number of words
userText = userText.replaceAll("\\s+", " ");
int counter = 0;
for (int i = 0; i <= userText.length()-1; i++) {
if (Character.isLetter(userText.charAt(i))) {
counter++;
for (i = 0; i <= userText.length()-1; i++) {
if(userText.charAt(i)==' ')
counter++;
}
}
}
System.out.println("Number of words: " + counter);
return;
}
}
break;
case "f": {
public static String findText(); { /** ERROR */
// case "f": find text
System.out.println("Enter a word or phrase to be found: ");
String find = scnr.next();
int matches = 0;
Matcher matcher = Pattern.compile(find, Pattern.CASE_INSENSITIVE).matcher(userText);
while (matcher.find()) matches++;
System.out.println("\"" + find + "\" instances: " + matches);
return;
}
}
break;
case "r": {
public static String replaceExclamation(); { /** ERROR */
// case "r": replace !'s
String userTextE = "";
userTextE = userText.replace('!', '.');
System.out.println("Edited text: " + userText);
return;
}
}
break;
case "s": {
public static String shortenSpace() { /** ERROR */
// case "s": shortens spaces
String userTextE = "";
userTextE = userText.replaceAll("\\s+", " ");
System.out.println("Edited text: " + userText);
return;
}
}
break;
case "q":
// case "q": quits
System.exit(0);
break;
return;
}
}
}
我是否应该让printMenu方法不包含菜单任务的其余方法?
答案 0 :(得分:0)
您无法在开关盒的主体内定义您的方法。这是因为,
您的代码:
switch (menuChoice) {
case "c": {
public static int getNumOfNonWSCharacters(); { /** ERROR */
// case "c": whitespace
String newStr = "";
newStr = userText.trim().replaceAll(" ","");
int lenInput = newStr.length();
System.out.println("Number of non-whitespace characters: " + lenInput);
return;
}
}
break;
方法中的方法定义(方法定义的嵌套)是不正确的。 ( getNumOfNonWSCharacters()的定义嵌套在 printMenu()的定义中
这是你应该做的:
编写一个具有其功能的不同java类 功能。
本课程的每个方法都应该执行其中一个 您编写此程序的功能/任务。
然后在开关案例中,创建一个对象 功能类,调用相应的方法。
另外,我不知道你为什么要在menuChoice = scnr.next();
之后回来。
return;
之后的代码将不会执行,因为控件会返回此方法的调用者。
希望这有帮助。