【问题标题】:Invoke Java Method调用 Java 方法
【发布时间】:2015-11-13 20:50:37
【问题描述】:

我正在尝试调用 java 方法来确定用户输入的字母是元音还是辅音。不确定如何正确调用该方法。

import java.util.*;
public class HW8Problem1{
   public static void main(String[] args) {

      Scanner input = new Scanner(System.in);

      System.out.print("Enter a letter: ");

      String letter = input.nextLine();

   }

   public static void vowel(String a){

      if (a.charAt(0) == 'a' || a.charAt(0) == 'A'){
         System.out.println(" is a vowel");

         if (a.charAt(0) == 'e' || a.charAt(0) == 'E')
            System.out.println(" is a vowel");

         if (a.charAt(0) == 'i' || a.charAt(0) == 'I')
            System.out.println(" is a vowel");

         if (a.charAt(0) == 'o' || a.charAt(0) == 'O')
            System.out.println(" is a vowel");

         if (a.charAt(0) == 'u' || a.charAt(0) == 'U')
            System.out.println(" is a vowel");

         else
            System.out.println(" is a consonant");    

      }
   }
}

【问题讨论】:

  • 当你写input.nextLine()System.out.print("Enter a letter: ");a.charAt(0)时,你认为你在做什么?你的方法期望作为一个论点是什么?只需提供即可。
  • 旁注:"Y" 呢?
  • "w"?
  • 元音(或者可能是 isVowel)应该返回一个布尔值而不是一个 void。

标签: java if-statement methods charat


【解决方案1】:

您可以通过指定方法名称后跟括号 (()) 来调用方法,其中包含要传递给方法的参数(如果有)。在您的情况下,例如:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a letter: ");
    String letter = input.nextLine();
    vowel(letter); // Here!
}

【讨论】:

  • 应该这样做。如果你为你的元音创建一个List,它可能看起来会更好一些,然后只检查if (list.contains(a.charAt(0)),而不是对每个字母进行多次检查。这只需要几行而不是你的 10+ 行。 (这是针对OP btw)
【解决方案2】:

正如 Mureinik 所说,您可以使用 vowel(line); 调用该方法
但是看到您的代码,我建议您进行其他改进。总是尽量不要重复自己。你能看到你是如何多次重复几乎相同的代码部分吗?删除重复项并以不同的方式创建方法,例如:

private static boolean isVowel(String line) {
    line = line.toLowerCase();
    return line.equals("a") || line.equals("e") || line.equals("i") || line.equals("o") || line.equals("u");
}

然后在main 方法中打印

System.out.println(isVowel(line) ? " is a vowel" : " is a consonant");

请注意,此解决方案假定 line 不是 nullline.length() == 1。尝试自己练习输入参数处理,以免将单词传递给isVowel() 方法。

【讨论】:

    【解决方案3】:

    以下是我的建议,它已经过测试并且运行良好。 请注意,您必须确保 if 表达式应该在一行中。

    import java.util.*;
    
    public class HW8Problem1{
       public static void main(String[] args) {
    
          Scanner input = new Scanner(System.in);
    
          System.out.print("Enter a letter: ");
    
          String letter = input.nextLine();
    //the below is the start of  IF expression, put it in one line code
          if (letter.toUpperCase().charAt(0)== 'A'||letter.toUpperCase().charAt(0)== 'E'||letter.toUpperCase().charAt(0)== 'O'||letter.toUpperCase().charAt(0)== 'i'||letter.toUpperCase().charAt(0)== 'U' ){ //End of IF expression until here, in 1 line
                System.out.println("is a vowel");
          }else{
            System.out.println(" is a consonant"); 
          }
          
       
       }
    
     }
    

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2016-04-12
      • 2013-03-05
      • 2013-05-14
      相关资源
      最近更新 更多