Java - 如何在 switch 语句中调用方法?
Java - How do I call a method within a switch statement?
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);
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:
averageLenth();
break;
default:
System.out.println("Invalid responce");
}
} while (choice >= 0 && choice < 4);
}
}
从显示的代码中,您调用 "averageLength()" 时没有参数,而它需要两个参数:单词数组及其计数。
该调用还包含一个拼写错误(缺少 "g")。
因此,编译器无法找到该函数,因为它引用了一个实际不存在的函数。
此外,"averageLength()"的两个参数中,单词数组未使用,您重新扫描单词,而不是使用通过开关的其他情况建立的列表。
这可能是一个逻辑错误。
请修复:
- 在方法
main()
中:averageLenth();
到 averageLength(words, count);
- 在方法
averageLength()
中:double sum;
到 double sum = 0;
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);
}
}
您粘贴的代码存在一些问题 - 其中一些问题已在之前的 comments/answers 中确定,但为了完整起见,我也将在此处列出:
averageLenth
名称中的拼写错误 - 更改为 averageLength
。因此,您的代码将无法编译。
averageLength(String[] words, int count)
的签名在调用站点未被接受 - 在交换机内的调用站点更改为 averageLength(words, count)
。
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: ");
}
}
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);
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:
averageLenth();
break;
default:
System.out.println("Invalid responce");
}
} while (choice >= 0 && choice < 4);
}
}
从显示的代码中,您调用 "averageLength()" 时没有参数,而它需要两个参数:单词数组及其计数。
该调用还包含一个拼写错误(缺少 "g")。
因此,编译器无法找到该函数,因为它引用了一个实际不存在的函数。
此外,"averageLength()"的两个参数中,单词数组未使用,您重新扫描单词,而不是使用通过开关的其他情况建立的列表。 这可能是一个逻辑错误。
请修复:
- 在方法
main()
中:averageLenth();
到averageLength(words, count);
- 在方法
averageLength()
中:double sum;
到double sum = 0;
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);
}
}
您粘贴的代码存在一些问题 - 其中一些问题已在之前的 comments/answers 中确定,但为了完整起见,我也将在此处列出:
averageLenth
名称中的拼写错误 - 更改为averageLength
。因此,您的代码将无法编译。averageLength(String[] words, int count)
的签名在调用站点未被接受 - 在交换机内的调用站点更改为averageLength(words, count)
。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: "); } }