Indexing 标记/HTML转换器-字符串索引超出范围

Indexing 标记/HTML转换器-字符串索引超出范围,indexing,substring,Indexing,Substring,我对我的第一个Java作业感到困惑!我遵循我老师的伪代码,并试图使它看起来像我们在课堂上做的例子,但我得到一个错误,说“字符串索引超出范围:-1”。我环顾四周,但真的没有发现错误是以这种方式发生的,或者我只是不知道如何使用这些信息来解决我的问题 有人能帮我吗 // MarkdownTranslator -- Converts input text written in Markdown format // into equivalent HTML.

我对我的第一个Java作业感到困惑!我遵循我老师的伪代码,并试图使它看起来像我们在课堂上做的例子,但我得到一个错误,说“字符串索引超出范围:-1”。我环顾四周,但真的没有发现错误是以这种方式发生的,或者我只是不知道如何使用这些信息来解决我的问题

有人能帮我吗

// MarkdownTranslator -- Converts input text written in Markdown format
//                       into equivalent HTML.

import java.util.*; // needed for the Scanner class

public class MarkdownTranslator
{
public static void main (String [] args)
{

    String input = getUserInput();
    String output = "";

    Scanner text = new Scanner(input);

    while(text.hasNextLine()){
        String line = text.nextLine();
        if (line.length() == 0){
            line = "<p></p>";
        }
        else{
            String working = "";
            int index = line.indexOf("*");
            if(index > -1) {
                working = line.substring(0, index);
                line = line.substring(index+1, line.length());
                index = line.indexOf("*");
                String subject = line.substring(0, index);
                working = working + translateEmphasis(subject);

                working = working + line.substring(index+1, line.length());

                line = working;
                working = "";
            }
            index = line.indexOf("**");
            if(index > -1) {
                working = line.substring(0, index);
                line = line.substring(index+2, line.length());
                index = line.indexOf("**");
                String subject = line.substring(0, index);
                working = working + translateStrongEmphasis(subject);

                working = working + line.substring(index+2, line.length());

                line = working;
                working = "";
            }
            index = line.indexOf("`");
            if(index > -1) {
                working = line.substring(0, index);
                line = line.substring(index+1, line.length());
                index = line.indexOf("`");
                String subject = line.substring(0, index);
                working = working + translateCode(subject);

                working = working + line.substring(index+1, line.length());

                line = working;
                working = "";
            }
            index = line.indexOf("![");
            if(index > -1) {
                working = line.substring(0, index);
                line = line.substring(index+2, line.length());
                index = line.indexOf("](");
                String altText = line.substring(0, index);
                line = line.substring(index+2, line.length());
                index = line.indexOf(" \"");
                String imgPath = line.substring(0, index);
                line = line.substring(index+2, line.length());
                index = line.indexOf("\")");
                String titleText = line.substring(0, index);
                line = line.substring(index+2, line.length());
                working = working + translateImage(altText, imgPath, titleText);

                working = working + line.substring(index+2, line.length());

                line = working;
                working = "";
            }
            index = line.indexOf("[");
            if(index > -1) {
                working = line.substring(0, index);
                line = line.substring(index+1, line.length());
                index = line.indexOf("](");
                String linkText = line.substring(0, index);
                line = line.substring(index+2, line.length());
                index = line.indexOf(")");
                String urlText = line.substring(0, index);
                line = line.substring(index+1, line.length());
                working = working + translateHyperlink(linkText, urlText);

                working = working + line.substring(index+1, line.length());
                line = working;
                working = "";
            }

        }
        output = output + line + "\n";
    }

System.out.println(output);

}


public static String translateEmphasis (String text)
{   

    return "<em>" + text + "</em>";
}

public static String translateStrongEmphasis (String text)
{

    return "<strong>" + text + "</strong>";
}

public static String translateHyperlink (String text, String url)
{

    return "<a href =" + url + ">" + text + "</a>";
}

public static String translateImage (String alt, String path, String title)
{

    return "<img src =" + path + " alt =" + alt + " title =" + title + ">";

}

public static String translateCode (String text)
{

    return "<code>" + text + "</code>";
}



// DO NOT MODIFY THE FOLLOWING HELPER METHOD
private static String getUserInput()
{
    Scanner in = new Scanner(System.in);
    boolean done = false;

    System.out.print("Please enter one or more lines of text. When you are ");
    System.out.print("finished, enter a single\nperiod on a line by itself ");
    System.out.println("to exit (the period will not be included in your\ninput):");

    String result = "";

    while (!done)
    {
        String line = in.nextLine();

        // Check to see if we received a single period as input
        if (line.trim().equals("."))
        {
            done = true; // terminate the loop
        }
        else
        {
            // Add the current line to the buffer and keep going
            result = result + line;
            result = result + "\n"; // restore the newline that nextLine() ate
        }
    }

    return result;
}
}

发布堆栈跟踪以找出问题所在。我不确定这意味着什么!下面就是错误:
线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:-1位于java.lang.String.substring(未知源代码)的MarkdownTranslator.main(MarkdownTranslator.java:48)