杭电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();
}
}
~~~