【问题标题】:Java Program giving Method/Return related errors.给出方法/返回相关错误的 Java 程序。
【发布时间】:2017-11-06 19:15:12
【问题描述】:

我正在做 Java 作业,它分为几个部分。我被困在第 2 部分。这并不是要成为家庭作业转储,我只是被困在第 2 部分,我将第 1 部分和第 3 部分包括在内。我非常感谢任何帮助或反馈。谢谢!

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

例如:

输入示例文本: 我们将继续探索太空。将会有更多的航天飞机航班和更多的航天飞机机组人员,是的,更多的志愿者、更多的平民、更多的太空教师。没有什么到此结束;我们的希望和旅程仍在继续!

您输入了:我们将继续我们的太空探索。将会有更多的航天飞机航班和更多的航天飞机机组人员,是的,更多的志愿者、更多的平民、更多的太空教师。没有什么到此结束;我们的希望和旅程仍在继续!

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

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

例如:

菜单 c - 非空白字符的数量 w - 字数 f - 查找文本 r - 全部替换! s - 缩短空格 q - 退出

选择一个选项:

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

例如:

输入示例文本: 我们将继续探索太空。将会有更多的航天飞机航班和更多的航天飞机机组人员,是的,更多的志愿者、更多的平民、更多的太空教师。没有什么到此结束;我们的希望和旅程仍在继续!

您输入了:我们将继续我们的太空探索。将会有更多的航天飞机航班和更多的航天飞机机组人员,是的,更多的志愿者、更多的平民、更多的太空教师。没有什么到此结束;我们的希望和旅程仍在继续!

菜单 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

【问题讨论】:

    标签: java string character


    【解决方案1】:

    您需要更改您的退货声明。

    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;
    

    【讨论】:

      【解决方案2】:

      首先,Scanner 没有 nextCharacter 方法。见here

      其次,类型转换是用 2 个括号包围类型完成的,例如。

      (char) someValue
      

      【讨论】:

      • 铸造什么?什么变量需要转换?
      猜你喜欢
      • 2016-08-24
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多