gpt4 book ai didi

java - 将类实现到现有类中

转载 作者:行者123 更新时间:2023-11-30 07:25:00 25 4
gpt4 key购买 nike

我正在尝试将我的语音识别器放入计算器应用程序中,以便盲人可以使用它。这是代码:

public class HelloWorld {

public static Recognizer recognizer;

public static void init(String[] args) {
try {
URL url;
if (args.length > 0) {
url = new File(args[0]).toURI().toURL();
} else {
url = HelloWorld.class.getResource("helloworld.config.xml");
}

System.out.println("Loading...");

ConfigurationManager cm = new ConfigurationManager(url);

recognizer = (Recognizer) cm.lookup("recognizer");
Microphone microphone = (Microphone) cm.lookup("microphone");


/* allocate the resource necessary for the recognizer */
recognizer.allocate();

/* the microphone will keep recording until the program exits */
if (microphone.startRecording()) {

System.out.println
("Say: (Good morning | Hello) " +
"( Bhiksha | Evandro | Paul | Philip | Rita | Will )");


System.out.println
("Start speaking. Press Ctrl-C to quit.\n");

/*
* This method will return when the end of speech
* is reached. Note that the endpointer will determine
* the end of speech.
*/

}
} catch (IOException e) {
System.err.println("Problem when loading HelloWorld: " + e);
e.printStackTrace();
} catch (PropertyException e) {
System.err.println("Problem configuring HelloWorld: " + e);
e.printStackTrace();
} catch (InstantiationException e) {
System.err.println("Problem creating HelloWorld: " + e);
e.printStackTrace();
}
}

public static int convertToInt(String num){
int tmp = 0;
switch(num){

case "one": tmp = 1; break;
case "two": tmp = 2; break;
case "three": tmp = 3; break;
case "four": tmp = 4; break;
case "five": tmp = 5; break;
case "six": tmp = 6; break;
case "seven": tmp = 7; break;
case "eight": tmp = 8; break;
case "nine": tmp = 9; break;
default: tmp = -1;
}
System.out.print("The number is: " + tmp);
return tmp;
}

public static int check(){
Result result = recognizer.recognize();
String resultText = "";
if (result != null) {
resultText = result.getBestFinalResultNoFiller();

System.out.println("-"+resultText+"-");
System.out.println("You said: " + resultText + "\n");
} else {
System.out.println("I can't hear what you said.\n");
}
return convertToInt(resultText);
}
}

这是应用程序的主循环:

public static void main(String[] args) {
HelloWorld.init(args);
SwingUtilities.invokeLater( new Runnable() {
public void run() {
new Main();
HelloWorld.check();
}
});
}

我似乎无法让它们同时运行,有人可以帮我解决这个问题吗?

最佳答案

您需要两个不同的线程。 Main 在 Swing 线程中运行,HelloWorld 在另一个线程中运行,例如主线程。

我还不清楚他们将如何沟通。不管怎样,这就是你如何在两个不同的线程中启动它们:

public static void main(String[] args) {
HelloWorld.init(args);
SwingUtilities.invokeLater( new Runnable() {
public void run() {
new Main();
}
});
HelloWorld.check();
}

但是请注意,此代码无法解决您的问题。您可以阅读有关 Swing 线程 here 的内容.

关于java - 将类实现到现有类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com