首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试运行这段代码时,它导致了“Exception in thread "main”java.lang.ArrayIndexOutOfBoundsException: 0“这个异常

当我尝试运行这段代码时,它导致了“Exception in thread "main”java.lang.ArrayIndexOutOfBoundsException: 0“这个异常
EN

Stack Overflow用户
提问于 2013-11-07 11:55:15
回答 3查看 179关注 0票数 0
代码语言:javascript
复制
import javax.speech.*;
import java.util.*;// creates a default Systhesize
import javax.speech.synthesis.*; //code for text-speech engine

public class SpeechUtils
{
    String speaktext;
    public void dospeak(String speak,String voicename)
    {
        speaktext=speak;
        String voiceName =voicename;
        try
        {
            SynthesizerModeDesc desc = new
            SynthesizerModeDesc(null,"general",Locale.US,null,null);
            Synthesizer synthesizer = Central.createSynthesizer(desc);
            synthesizer.allocate();
            synthesizer.resume();
            desc = (SynthesizerModeDesc) 
            synthesizer.getEngineModeDesc();
            Voice[] voices = desc.getVoices();
            Voice voice = null;
            for (int i = 0; i < voices.length; i++)
            {
                if (voices[i].getName().equals(voiceName))
                {
                    voice = voices[i];
                    break;
                }
            }
            synthesizer.getSynthesizerProperties().setVoice(voice);
            synthesizer.speakPlainText(speaktext, null);     

            synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);
            synthesizer.deallocate();
        }catch (Exception e)
        {
             String message = " missing speech.properties in " + System.getProperty("user.home") + "\n"; 
            System.out.println(""+e);
            System.out.println(message);}
        }

        public static void main(String[] args)
        {
            SpeechUtils obj=new SpeechUtils();
            obj.dospeak(args[0],"life is beautiful");//getting an exception here....
        }

    }

如何修复此异常?我收到一个错误,如下所示

代码语言:javascript
复制
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at SpeechUtils.main(SpeechUtils.java:44)". 

这是一个Java程序或文本到语音的转换。我导入了所有必要的libraries.But,无法单独修复此异常

EN

回答 3

Stack Overflow用户

发布于 2013-11-07 11:56:28

在运行程序时,您需要提供运行时参数。正如您的代码中访问的第一个参数一样:

代码语言:javascript
复制
obj.dospeak(args[0],"life is beautiful");//getting an exception here....

如果不提供参数,那么在args数组的索引0处将没有元素,因此使用args[0]访问它将抛出ArrayIndexOutOfBoundsException。你需要这样运行你的代码:

代码语言:javascript
复制
java SpeechUtils argument 

将参数替换为要输入到程序中的实际值

票数 2
EN

Stack Overflow用户

发布于 2013-11-07 12:04:48

当您从命令行调用程序时,需要传递一些参数

代码语言:javascript
复制
java SpeechUtils "I am doing well"

请记住

java.lang.ArrayIndexOutOfBoundsException:10

意味着您试图访问的数组在Array10中没有分配任何元素,即缺少第11个元素。在这里,您在0处得到异常,这意味着第0个元素不在那里

票数 1
EN

Stack Overflow用户

发布于 2013-11-07 12:14:14

执行程序时缺少参数。

代码语言:javascript
复制
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

由于缺少您需要提供的参数而导致的错误,因为您在代码obj.dospeak(args[0],"life is beautiful");中使用了args[0],因此在运行时传递参数。args[0]用它的第一个元素表示数组,所以运行你的程序只需要一个参数。

使用命令java SpeechUtils YourArgumentYouWantToAdd

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19827719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档