2

所以我在为我的 java 类做作业时遇到问题。目的是创建一个程序,该程序使用 switch 语句将字母从字符串转换为其语音。即,A 或 a 变为 Alpha。

我遇到的问题是 switch 语句在字符串中的第一个空格处停止读取。我如何让它继续读取字符串而不在空格处停止(即“”)?

基本上用户输入一个字符串“Hi Hi”,输出应该是“Hotel Indiana Hotel Indiana”

我遇到的问题是它只会让“印第安纳酒店”停在我认为的第一个空白处。

这是我到目前为止的代码:(我删掉了大部分字母/数字以节省空间,并保留了我认为对回答问题最重要的内容。)

    import java.util.*;
    public class SwitchStatement {

/**
 * @param args
 */
public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    System.out.println ("Enter a message: ");
    String message = keyboard.next(); 
    for(int i = 0 ; i < message.length(); i++) 
      switch(message.charAt(i)) { 
    case 'a':
    case 'A':  
        System.out.print("Alpha"); 
        break; 
    case 'b':
    case 'B':  
        System.out.print("Bravo"); 
        break;
    case ' ':  
                System.out.print(" "); 
                break;
    default:  
                System.out.print(message.charAt(i)); 
                break;
}

}
}

在此先感谢您的帮助。

4

2 回答 2

2

String message = keyboard.next(); 调用时读取一个单词,以空格 (" ") 分隔。

用于String message = keyboard.nextLine(); 读取包括空格在内的整行。

于 2012-10-20T18:34:25.397 回答
0

你应该使用nextLine. 如果你使用next()分隔符进入图片,这是空格字符。所以最终你最终只能读取一个标记而不是完整的字符串。

String message = keyboard.nextLine();

例如对于以下字符串

A a  B b
keyboard.next()---> will return you A if you again call then B and so on
keyboard.nextLine()-->will return you whole line ie. A a  B b which you want
于 2012-10-20T18:34:14.733 回答