为了账号安全,请及时绑定邮箱和手机立即绑定

Java - 如何在 switch 语句中调用方法?

Java - 如何在 switch 语句中调用方法?

繁花不似锦 2023-09-20 19:11:41
averageLength获取用户在上一个案例中输入的所有单词并获取平均单词数。switch 语句位于 main 方法下(此处未显示),但是当我尝试实现案例 3 以获得平均值时,它不起作用,因为它没有average在main方法下声明,而是在averageLength. 我怎样才能解决这个问题?谢谢    import java.util.Scanner;    import java.util.Arrays;    /**     * Word Manager     *     * @author Harry     */    public class WordManager {    /**     * Adds the word to the next empty space in the array, if there is space.     * Returns the new size of the array.     */    public static int add(String[] words, int count, String word) {        if (count < words.length) {            words[count] = word;            count++;        } else {            System.out.println("The array is full");        }        return count;    }    /** Displays the words in the collection as a comma separated list. */    public static void printList(String[] words, int count) {     }    public static void averageLength(String[] words, int count) {        Scanner sc = new Scanner(System.in);        double average;        double sum;        while (sc.hasNext()) {            String userInput = sc.next();            double charNum = userInput.length();            sum = charNum + sum;            count++;            if (count > 0) {                average = sum / count;                System.out.println("Average word length = " + average);            }        }    }    public static void main(String[] args ) {        Scanner sc = new Scanner(System.in);        String[] words = new String[20];        int count = 0;        String aWord;        int choice;        do {            System.out.println("\t MENU:");            System.out.println("1. Add a word");            System.out.println("2. Display words:");            System.out.println("3. Display average word length");            System.out.println("4. Quit");            System.out.println("Enter option: ");            choice = sc.nextInt();            System.out.println("choice = "+choice);
查看完整描述

4 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您粘贴的代码存在一些问题 - 其中一些问题已在之前的评论/答案中确定,但为了完整性,我也会在此处列出它们:

  1. 名称中的拼写错误averageLenth- 更改为averageLength。因此,您的代码将无法编译。

  2. averageLength(String[] words, int count)呼叫站点未遵守 的签名- 更改averageLength(words, count)为交换机内的呼叫站点。

  3. 的实现averageLength是不正确的 - 您的实现实际上并不是迭代单词数组并计算平均值,而是似乎要求扫描仪提供下一个输入。我更改了下面代码中的实现,以通过迭代单词数组来计算平均值。

import java.util.Scanner;

import java.util.Arrays;


/**

 * Word Manager

 *

 * @author Harry

 */

public class WordManager {


/**

 * Adds the word to the next empty space in the array, if there is space.

 * Returns the new size of the array.

 */


public static int add(String[] words, int count, String word) {

    if (count < words.length) {

        words[count] = word;

        count++;

    } else {

        System.out.println("The array is full");

    }

    return count;

}


/**

 * Displays the words in the collection as a comma separated list.

 */

public static void printList(String[] words, int count) {

}



private static void averageLength(String[] words, int count) {

    int sum=0;


    for(int word =0; word < count; word++){

     int wordLength = words[word].length();

     sum += wordLength;

    }


    double averageWorldLength = sum/count;

    System.out.println("Average word length = " +averageWorldLength;

}



public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    String[] words = new String[20];

    int count = 0;

    String aWord;

    int choice;


    do {

        displayMenuOptions();

        choice = sc.nextInt();

        System.out.println("choice = " + choice);


        switch (choice) {

            case 1:

                System.out.println("Add a word");

                aWord = sc.next();

                count = add(words, count, aWord);

                break;


            case 2:

                System.out.println("Display words");

                System.out.println("We have an array of " + words.length + " integers: " + Arrays.toString(words));

                break;


            case 3:

                  averageLength(words, count);

                  break;

            default:

                System.out.println("Invalid responce");


        }

    } while (choice >= 0 && choice < 4);

}


private static void displayMenuOptions() {

    System.out.println("\t MENU:");

    System.out.println("1. Add a word");

    System.out.println("2. Display words:");

    System.out.println("3. Display average word length");

    System.out.println("4. Quit");

    System.out.println("Enter option: ");

 }

}


查看完整回答
反对 回复 2023-09-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

import java.util.Scanner;

import java.util.Arrays;


/**

 * Word Manager

 *

 * @author Harry

 */

public class WrodManager {


    /**

     * Adds the word to the next empty space in the array, if there is space.

     * Returns the new size of the array.

     */

    public static int add(String[] words, int count, String word) {


        if (count < words.length) {

            words[count] = word;

            count++;

        } else {

            System.out.println("The array is full");

        }

        return count;

    }


    /** Displays the words in the collection as a comma separated list. */

    public static void printList(String[] words, int count) {

    }


    public static void averageLength(String[] words, int count) {

        Scanner sc = new Scanner(System.in);

        double average;

        double sum = 0;


        while (sc.hasNext()) {

            String userInput = sc.next();


            double charNum = userInput.length();

            sum = charNum + sum;

            count++;


            if (count > 0) {

                average = sum / count;

                System.out.println("Average word length = " + average);


            }

        }


    }


    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String[] words = new String[20];

        int count = 0;

        String aWord;

        int choice;


        do {

            System.out.println("\t MENU:");

            System.out.println("1. Add a word");

            System.out.println("2. Display words:");

            System.out.println("3. Display average word length");

            System.out.println("4. Quit");

            System.out.println("Enter option: ");

            choice = sc.nextInt();

            System.out.println("choice = " + choice);


            switch (choice) {

            case 1:

                System.out.println("Add a word");

                aWord = sc.next();

                count = add(words, count, aWord);

                break;


            case 2:

                System.out.println("Display words");

                System.out.println("We have an array of " + words.length + " integers: " + Arrays.toString(words));

                break;


            case 3:

                averageLength(words, count);

                break;


            default:

                System.out.println("Invalid responce");


            }

        } while (choice >= 0 && choice < 4);


    }

}


查看完整回答
反对 回复 2023-09-20
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

从显示的代码中,您可以不带参数调用“averageLength()”,而它需要两个参数:单词数组及其计数。

该调用还包含一个拼写错误(缺少“g”)。

因此,编译器无法找到该函数,因为它引用了实际不存在的函数。

此外,在“averageLength()”的两个参数中,单词数组未使用,您可以重新扫描单词,而不是使用通过其他开关情况建立的列表。这很可能是一个逻辑错误。


查看完整回答
反对 回复 2023-09-20
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

请修复:

  1. 在方法中main()averageLenth();averageLength(words, count);

  2. 在方法中averageLength()double sum;double sum = 0;


查看完整回答
反对 回复 2023-09-20
  • 4 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信