Java程序给出方法/返回相关的错误。

时间:2017-06-05 22:30:27

标签: java string character

我正在研究Java作业,它分为几个部分。我被困在第2部分。这不是一个家庭作业转储,我只是坚持第2部分,我包括第1部分和第3部分的上下文。我真的很感激任何帮助或反馈。谢谢!

(1)提示用户输入他们选择的字符串。将文本存储在字符串中。输出字符串。 (1分)

例如:

输入示例文字: 我们将继续我们在太空中的探索。将有更多的班车航班和更多的班车服务员,是的,更多的志愿者,更多的平民,更多的太空教师。没有什么在这里结束;我们的希望和旅程继续!

你输入了:我们将继续我们在太空中的任务。将有更多的班车航班和更多的班车服务员,是的,更多的志愿者,更多的平民,更多的太空教师。没有什么在这里结束;我们的希望和旅程继续!

(2)实现printMenu()方法,该方法输出用于分析/编辑字符串的用户选项菜单,并返回用户输入的菜单选项。每个选项都由一个字符表示。

如果输入了无效字符,请继续提示输入有效字符。提示:在实现其他选项之前实施Quit。在main()方法中调用printMenu()。继续调用printMenu(),直到用户输入q退出。 (3分)

例如:

MENU c - 非空白字符数 w - 单词数量 f - 查找文字 r - 替换所有! s - 缩短空间 q - 退出

选择一个选项:

(3)实现getNumOfNonWSCharacters()方法。 getNumOfNonWSCharacters()有一个字符串作为参数,并返回字符串中的字符数,不包括所有空格。在main()方法中调用getNumOfNonWSCharacters()。 (4分)

例如:

输入示例文字: 我们将继续我们在太空中的探索。将有更多的班车航班和更多的班车服务员,是的,更多的志愿者,更多的平民,更多的太空教师。没有什么在这里结束;我们的希望和旅程继续!

你输入了:我们将继续我们在太空中的任务。将有更多的班车航班和更多的班车服务员,是的,更多的志愿者,更多的平民,更多的太空教师。没有什么在这里结束;我们的希望和旅程继续!

MENU c - 非空白字符数 w - 单词数量 f - 查找文字 r - 替换所有! s - 缩短空间 q - 退出

选择一个选项: C 非空白字符数:181

我的代码:

import java.util.Scanner;

public class AuthoringAssistant {

   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      String userInput = sc.nextLine();
      System.out.println("Enter a sample text: ");
      System.out.println(userInput);

      return printMenu;
   }

   public static int printMenu(Character[] menu) {
      Scanner in = new Scanner(System.in);
      Character userChar = in.nextCharacter();
      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");
      System.out.println("Choose an option: ");

      if (userChar == 'q') {
         System.out.println("q"); 
         System.out.println("Quit");
      }
      else if (userChar == 'w') {
         System.out.println("w");
         System.out.println("Number of words: ");
      }
      else if (userChar == 'f') {
         System.out.println("f");
         System.out.println("Find text: ");
      }
      else if (userChar == 'r') {
         System.out.println("r");
         System.out.println("Replace all !'s: ");
      }
      else if (userChar == 's') {
         System.out.println("s");
         System.out.println("Shorten spaces: ");
      }
      else if (userChar == 'c') {
         System.out.println("c");
         System.out.println("Number of non-whitespace characters: ");
      }  
      else {
         System.out.println("Please select a valid character.");
      }

      return char in.nextCharacter();
   }
}

我收到以下错误:

AuthoringAssistant.java:55: error: '.class' expected
      return char in.nextCharacter();
              ^
AuthoringAssistant.java:55: error: illegal start of expression
      return char in.nextCharacter();
                ^
AuthoringAssistant.java:55: error: ';' expected
      return char in.nextCharacter();
                              ^
3 errors

2 个答案:

答案 0 :(得分:0)

首先,Scanner没有nextCharacter方法。请参阅here

其次,使用类型的2个括号进行投射,例如。

(char) someValue

编辑:请参阅Will Potato的回答

答案 1 :(得分:0)

您需要更改退货声明。

1)您正在尝试返回一个char,但您的方法返回一个int。

public static int printMenu(...){
   ...
   return char ... ;
}

2)“。nextCharacter()”不存在。您需要使用“.nextLine()”然后使用“.charAt(x)”

例如:

 in.nextLine().charAt(0); //To get the first character from the line

3)即使你的方法确实返回了字符,你只需在声明变量或强制转换为其他类型时声明类型。

所以而不是:

return char myVariable;

你只需写:

return myVariable;