【问题标题】:Begining Java student [closed]初学 Java 学生 [关闭]
【发布时间】:2015-07-24 03:15:49
【问题描述】:

我正在编写一个程序,我必须使用方法来计算我的字符串,.upper 和 lower 使用 switch 语句。我的代码没有显示任何错误,有人可以帮忙。

import java.util.*;
public class Strings
{

    public static void main(String[] args) 
    {
        String selection;

        Scanner keyboard = new Scanner(System.in);

        System.out.println("*********** EXAM 3 ENTER A STRING *************");
        System.out.println("Enter 1 to display the number of words in the string");
        System.out.println("Enter 2 to display the string in all capital letters");
        System.out.println("Enter 3 to display the string in all lower case letters");  
        System.out.println("Enter 4 to display the string in reverse order");
        System.out.println("Enter -1 to exit");
        selection = keyboard.nextLine();

        switch(selection.charAt(0))
        {
        case 1:
            numberOfWords(selection);
            break;
        case 2:
            allCapitals(selection);
            break;
        case 3:
            allLowers(selection);
            break;
        case 4:
            reverseOrder(selection);
            break;



        }//ends switch


    }

    /*public static void menuMethod(String [] args)
    {


        Scanner input = new Scanner(System.in);



        System.out.println("*********** EXAM 3 ENTER A STRING *************");
        System.out.println("Enter 1 to display the number of words in the string");
        System.out.println("Enter 2 to display the string in all capital letters");
        System.out.println("Enter 3 to display the string in all lower case letters");  
        System.out.println("Enter 4 to display the string in reverse order");
        System.out.println("Enter -1 to exit");



        }
       */







       public static void numberOfWords(String selection)
        {

          String input;  // To hold input


          Scanner keyboard = new Scanner(System.in);


          System.out.print("Enter a string: ");
          input = keyboard.nextLine();

          // Display the number of words.
          System.out.println("That string has " + wordCount(input) + " words in it.");



       }
       public static int wordCount(String str)
       {
          StringTokenizer strTok = new StringTokenizer(str);
          return strTok.countTokens();
       }


       public static void allCapitals (String str)
       {
        String input;
        String capInput;

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Please enter a string. ");
        input = keyboard.nextLine();//You must use nextLine here next will not work.

        capInput = input.toUpperCase();
        System.out.println("Your capital case string = \n" + capInput); 
       }

       public static void allLowers (String str)
       {
        String input;
        String lowerInput;

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Please enter a string. ");
        input = keyboard.nextLine();//You must use nextLine here next will not work.

        lowerInput = input.toUpperCase();
        System.out.println("Your lower case string = \n" + lowerInput); 
       }

       public static void reverseOrder (String str)
       {
          String input;  // To hold input


          Scanner keyboard = new Scanner(System.in);


          System.out.print("Enter something: ");
          input = keyboard.nextLine();

          // Display it backwards.
          backward(input);
       }


       public static void backward(String str)
       {
          for (int i = str.length() - 1; i >= 0; i--)
             System.out.print(str.charAt(i));
          System.out.println();
       }


}

【问题讨论】:

  • 如果您的代码没有任何错误,那么问题出在哪里?你没有得到预期的输出吗?然后输入输入,你得到的输出和你期望的。同时编辑问题以更好地反映问题。
  • 您的问题标题需要更新,以提供您遇到的问题的一些想法,此外,如果您提出实际问题会有所帮助
  • “Java 初学者”不是问题。你有什么需要帮助的?你想解决什么问题?

标签: java eclipse string switch-statement


【解决方案1】:

请使用此代码进行切换

 switch(selection.charAt(0))

        {

        case '1':
            numberOfWords(selection);
            break;

        case '2':
            allCapitals(selection);
            break;

        case '3':
            allLowers(selection);
            break;

        case '4':
            reverseOrder(selection);
            break;

        }//ends switch

【讨论】:

  • 请解释一下这是做什么的,为什么原始版本不好,为什么更好?没有上下文的代码没有帮助。
  • 你在 switch 中给出了一个字符而不是一个数字。所以你必须在 switch not 1 中指定一个字符,而不是使用 '1' 。因为它是一个字符而不是一个数字
【解决方案2】:

将您的开关条件替换为

switch(Integer.parseInt(selection))
{
//your code
}

而不是

switch(selection.charAt(0))
{
  //your code
}

如果您使用charAt(0),您的检查条件必须是这样,因为该方法返回一个字符值

    case '1':
        numberOfWords(selection);
        break;
    case '2':
        allCapitals(selection);
        break;
    case '3':
        allLowers(selection);
        break;
    case '4':
        reverseOrder(selection);
        break;

【讨论】:

    【解决方案3】:

    你还没有说程序输出有什么问题。尽可能彻底地解释您的问题将帮助您快速得到一个好的答案。

    至于可能出现的问题:

    1. 您的allLowers() 方法正在使用toUpperCase()。作为一种良好的设计实践,尽量少复制粘贴代码,因为复制/粘贴代码意味着可能有一个函数可以做同样的事情。

    2. 您实际上从未检查过-1 的输入。您在当前方法中要做的所有事情(如果要检查退出条件)就是检查 - 符号,因为它是第一个字符,而不是整个 -1 字符串,如果你扩展程序。

    【讨论】:

    • 他实际上不需要检查-1。如果用户输入 -1 则程序将退出,因为在 switch 语句中没有检查。
    • 我知道不需要检查 -1,但是如果不检查,它会引入潜在的不良行为,因为用户可以输入 } 并能够退出。这只是一种设计偏好,但有意识地检查有助于代码自我记录并且通常有更少的错误。
    猜你喜欢
    • 2011-09-20
    • 2011-03-17
    • 2020-07-25
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多