Java 方法/main()之间交互的扫描程序

Java 方法/main()之间交互的扫描程序,java,Java,编译代码时,会出现以下错误: AuthoringAssistant.java:19: error: cannot find symbol char menuChoice = printMenu(scan); ^ symbol: variable scan location: class AuthoringAssistant 1 error 这学期我才刚开始学习Java,所以我仍在尝试掌握方

编译代码时,会出现以下错误:

    AuthoringAssistant.java:19: error: cannot find symbol
    char menuChoice = printMenu(scan);
                              ^
    symbol:   variable scan
    location: class AuthoringAssistant
    1 error 
这学期我才刚开始学习Java,所以我仍在尝试掌握方法的诀窍,现在我对扫描器如何在方法和main()之间交互感到困惑。如果有人能给我指出正确的方向,这将是一个很大的帮助,因为我必须写更多的5种方法来塞进这个东西

import java.util.Scanner;
public class AuthoringAssistant {

public static String scnrMethod() {

  Scanner scnr = new Scanner(System.in);
  String userInput = scnr.nextLine(); // userInput scans for text
  return userInput;
}

public static void main(String[] args) {      

  System.out.println("Enter a sample text:");
  scnrMethod();
  System.out.println();
  System.out.println("You entered: " + scnrMethod());

  char menuChoice = printMenu(scan);

  boolean t = true;

  if (menuChoice == 'q') {
     System.exit(0);
  }
  //else if (menuChoice == 'c') {
  //   System.out.println();
  //}
  //else if (menuChoice == 'w') {
  //   System.out.println();
  //}
  //else if (menuChoice == 'f') {
  //   System.out.println();
  //}
  //else if (menuChoice == 'r') {
  //   System.out.println();
  //}
  //else if (menuChoice == 's') {
  //   System.out.println();
  //}
  else {
     t = false;
  }
  if (t != true) {
    System.out.print("Input an option: " + menuChoice);
  }

}

public static char printMenu(Scanner scan) {//provides menu for main() 

  System.out.println();
  System.out.println("MENU");
  System.out.println("c - Number of non-whitespace characters");
  System.out.println("w - Number of words");
  System.out.println("f - Find text");
  System.out.println("r - Replace all !'s");
  System.out.println("s - Shorten spaces");
  System.out.println("q - Quit\n");

  System.out.println("Choose an option:");
  char menuChoice = scan.nextLine().charAt(0);

  return menuChoice;      
} 

//public static int getNumOfNonWSCharacters() { //finds number of non-
//whitespace characters in the text
//   
//   
//   return ;
//}

}

您缺少一个变量声明。由于您在多个地方使用
扫描仪
,我建议将相同的实例用于这些方法

import java.util.Scanner;

public class AuthoringAssistant {

    private static Scanner scan = new Scanner(System.in);

    public static String scnrMethod() {
        String userInput = scan.nextLine(); // userInput scans for text
        return userInput;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("Enter a sample text:");
        String input = scnrMethod();
        System.out.println("You entered: " + input);

        char menuChoice = printMenu();

        boolean t = true;

        if (menuChoice == 'q') {
            System.exit(0);
        }
        else {
            t = false;
        }
        if (t != true) {
            System.out.print("Input an option: " + menuChoice);
        }

    }

    public static char printMenu() {// provides menu for main()

        System.out.println();
        System.out.println("MENU");
        System.out.println("c - Number of non-whitespace characters");
        System.out.println("w - Number of words");
        System.out.println("f - Find text");
        System.out.println("r - Replace all !'s");
        System.out.println("s - Shorten spaces");
        System.out.println("q - Quit\n");

        System.out.println("Choose an option:");
        char menuChoice = scan.nextLine().charAt(0);

        return menuChoice;
    }

}

什么是
scan
?在方法调用之前,需要声明变量
scan
。在这种情况下,它将是:
Scanner scan=new Scanner(System.In)
@Frederik Hansen当我这样做时,它在线程“main”java.util.NoSuchElementException中抛出:
异常:在AuthoringAssistant.main(AuthoringAssistant.java:18)的AuthoringAssistant.scnMethod(AuthoringAssistant.java:8)的java.util.Scanner.nextLine(Scanner.java:1540)中找不到任何行