降价算法java;转换器问题

时间:2012-10-25 05:02:35

标签: java markdown

public class Md2html {
    public static void main(String[] args) throws IOException {

       String stringToConvert = new Scanner(System.in).nextLine();
       System.out.println(convert(stringToConvert));

    }

    public static String convert(String str) {

         if (str.equals("# "))
             System.out.println(" ");

         Pattern pattern = Pattern.compile("(#+[^#]+)");
         Matcher matcher = pattern.matcher(str);

         while (matcher.find()) {
             String str1 = matcher.group(1);
             if(str1.replaceFirst("#+", "").length() == 0 ||
                str1.replaceFirst("#+", "").matches("[\\s]+")) 
                      continue;
             int n = str1.length() - str1.replaceFirst("#+", "").length();
             System.out.println("<h" + n + ">" + str1.substring(n) + 
                                "</h" + n + ">");

             double carac;
             carac = str.charAt(0);
             if(carac>65 & carac <=90) {
                  System.out.print("<p>");
                  System.out.println(str);
                  System.out.println("<p>");
             }
        }

        return ("");
    }     
}

好的,现在我有一个算法将#转换为&lt; H1&GT; &LT; H2&GT;取决于#的数量...我现在正在尝试添加&lt; p为H.在段落的开头和&lt; / p为H.在它的最后。由于某种原因,转换器的第二部分,应该添加&lt; p为H.在开头和&lt; / p为H.在段落的末尾似乎不起作用(这是以双carac开头的代码)。谁能告诉我我做错了什么???

1 个答案:

答案 0 :(得分:0)

如果字符串以大写字母开头且没有结束标记,则为段落打印两个开始标记。取代

System.out.print("<p>");
System.out.println(str);
System.out.println("<p>");

System.out.print("<p>");
System.out.println(str);
System.out.println("</p>"); //<--here

此外,您应该使用逻辑AND &&而不是按位AND &进行布尔运算。

此外,String#charAt(int)还会返回char,而非double。您将carac声明为double。相反,声明为char