在使用方法执行每项任务时,如何使用switch语句编写菜单

时间:2016-11-14 01:51:50

标签: java methods menu switch-statement

此程序允许用户编辑其字符串。我在程序的菜单部分中的每个方法都有问题。出于某种原因,他们点亮了一个错误,我使用的是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方法不包含菜单任务的其余方法?

1 个答案:

答案 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;之后的代码将不会执行,因为控件会返回此方法的调用者。

希望这有帮助。