【发布时间】:2014-06-24 14:24:59
【问题描述】:
嘿,我用 Java 编写程序,如果你在控制台中输入,然后它会响应计算机实际说话(有声音),我使用的是 FreeTTs 语音合成器。出于某种原因,当我编写以下代码时,它的输出不是我想要的。
import java.util.Scanner;
import com.sun.speech.freetts.VoiceManager;
import com.sun.speech.freetts.Voice;
public class TextToSpeech {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
String userInput = input.nextLine();
if(userInput == "hi"){
Voice v;
VoiceManager vm=VoiceManager.getInstance();
v=vm.getVoice("kevin16");
v.allocate();
v.speak("Hey my name is jarvis");
input.close();
}else
System.out.println("you suck try again");
}
}
【问题讨论】:
-
if(userInput.equals("hi")) {将正确比较您的字符串。 -
您永远不应该将字符串与 == 进行比较。使用 .equals() 代替
-
Archer评论背后的原因是==比较只比较两个对象的存储位置。虽然在 Java 中字符串是不可变的,但两个字符串的实际数据位置仍然可能不同。 '.equals' 将检查对象的“内容”而不是存储位置,确保 equals 将返回 true 到您的 if 语句。
-
谢谢大家,工作完美
标签: java if-statement speech-synthesis freetts