-3

嘿,我在 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");
    }

}
4

1 回答 1

1

当您比较引用变量(String实例中的引用变量)时, ==比较运算符会检查它们是否引用同一个对象。例如;

String s = new String("s");
String s2 = "s";
System.out.println(s==s2);

上面的输出false是因为ss2不引用String内存中的同一个对象;

相反,请使用该.equals()方法来比较您的String引用是否有意义地相等。例如;

String s = new String("s");
String s2 = "s";
System.out.println(s.equals(s2));

以上输出true

于 2014-06-24T14:27:42.533 回答