杭电ACM1088 Write a simple HTML Browser Java

最后更新于:2022-04-01 09:48:33

~~~ # Write a simple HTML Browser Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9459    Accepted Submission(s): 2678 ~~~ Problem Description If you ever tried to read a html document on a Macintosh, you know how hard it is if no Netscape is installed. Now, who can forget to install a HTML browser? This is very easy because most of the times you don't need one on a MAC because there is a Acrobate Reader which is native to MAC. But if you ever need one, what do you do? Your task is to write a small html-browser. It should only display the content of the input-file and knows only the html commands (tags) <br> which is a linebreak and <hr> which is a horizontal ruler. Then you should treat all tabulators, spaces and newlines as one space and display the resulting text with no more than 80 characters on a line. Input The input consists of a text you should display. This text consists of words and HTML tags separated by one or more spaces, tabulators or newlines. A word is a sequence of letters, numbers and punctuation. For example, "abc,123" is one word, but "abc, 123" are two words, namely "abc," and "123". A word is always shorter than 81 characters and does not contain any '<' or '>'. All HTML tags are either <br> or <hr>. Output You should display the the resulting text using this rules:   . If you read a word in the input and the resulting line does not get longer than 80 chars, print it, else print it on a new line.   . If you read a <br> in the input, start a new line.   . If you read a <hr> in the input, start a new line unless you already are at the beginning of a line, display 80 characters of '-' and start a new line (again). The last line is ended by a newline character. Sample Input ~~~ Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen wird. <br> Zwei <br> <br> produzieren zwei Newlines. Es gibt auch noch das tag <hr> was einen Trenner darstellt. Zwei <hr> <hr> produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html genauso wenig wie mehrere Leerzeilen. ~~~   Sample Output ~~~ Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen wird. Zwei produzieren zwei Newlines. Es gibt auch noch das tag -------------------------------------------------------------------------------- was einen Trenner darstellt. Zwei -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html genauso wenig wie mehrere Leerzeilen. ~~~ ~~~ import java.util.Scanner; public class Main{ /** * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = "",strCom = "",strComCopys = "", strCopy = ""; int countNum = 0; while(scanner.hasNext()) { str = scanner.next(); if(str.equals("<br>")) { strCom = ""; System.out.println(); } else if(str.equals("<hr>")) { if(strCom.length() > 0) System.out.println("\r\n--------------------------------------------------------------------------------"); else System.out.println("--------------------------------------------------------------------------------"); strCom = ""; } else if(str != " " && str.trim().length() > 0) { strComCopys = strCom; if(strCom.length() > 0) strCom += " " + str; else strCom += str; countNum = strComCopys.length(); if(strCom.length() > 80) { System.out.println(); strCom = str; countNum = 0; strComCopys = ""; } if(countNum == 0) System.out.print(str); else System.out.print(" " + str); } strCopy = str; } System.out.println(); scanner.close(); } } ~~~
';