Задача
Семь решений в процентах
Универсальные идентификаторы ресурсов (или URI) являются строками, например, такие как http://icpc.baylor.edu/icpc/, MAILTO: foo@bar.org, ftp://127.0.0.1/pub/linux, или даже просто readme.txt, что, как правило, используется для идентификации ресурсов в Интернете или на локальном компьютере. Некоторые символы зарезервированы в URI, и если зарезервированный символ является частью идентификатора, то он должен быть процент-закодирован, заменив его знаком процента, за которым следуют две шестнадцатеричные цифры, представляющие ASCII код символа. Таблица семи зарезервированные символы и их кодировка приведена ниже. Ваша задача написать программу, которая может выполнять процент-кодирование заданной строки символов.
| Символ | Кодировка | 
| » » (space) | %20 | 
| «!» (exclamation point) | %21 | 
| «$»(dollar sign) | %24 | 
| «%» (percent sign) | %25 | 
| «(» (left parenthesis) | %28 | 
| «)» (right parenthesis) | %29 | 
| «*» (asterisk) | %2a | 
Входные данные
Входные данные состоят из одной или нескольких строк, каждая из 1-79 символов в отдельной строке, а затем строки, содержащей только «#», что свидетельствует об окончании ввода. Символ «#» используется только как маркер окончания входных данных и не содержится в других местах во входных данных. Строка может содержать пробелы, но не в начале или в конце строки, и никогда не содержит двух или более последовательных пробелов.
Выходные данные
Для каждой строки, полученной на входе, заменить каждое вхождение зарезервированного символа в таблице, приведённой выше, на его процент-кодирование, точно так, как это показано в примере, и вывести результирующую строку в отдельной строке. Ещё раз отметим, что процент-кодирование для символа «*» «%2a» (со строчной «а»), а не «%2A» (с прописной буквой «A»).
Тесты
| Входные данные | Выходные данные | 
| Happy Joy Joy! http://icpc.baylor.edu/icpc/ plain_vanilla (**) ? the 7% solution # | Happy%20Joy%20Joy%21 http://icpc.baylor.edu/icpc/ plain_vanilla %28%2a%2a%29 ? the%207%25%20solution | 
Код программы
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import java.util.*; class Main { 	public static void main (String[] args) throws java.lang.Exception 	{ 		Scanner scan = new Scanner(System.in); 		String S; 		boolean loop = scan.hasNextLine();  		while (loop){ 			S = scan.nextLine(); 			if (S.equals("#"))	break; 			else{	 				S = S.replace ("%", "%25"); 				S = S.replace (" ", "%20"); 				S = S.replace ("!", "%21"); 				S = S.replace ("$", "%24"); 				S = S.replace ("(", "%28"); 				S = S.replace (")", "%29"); 				S = S.replace ("*", "%2a"); 				System.out.println(S); 			} 		} 	} } | 
Решение
Создаем цикл в котором с помощью метода replace начиная с «%» (т.к. он будет использоваться в последующих кодировках) заменяем символы на их кодировку в ASCII и печатаем измененную строку. В начале каждого цикла проверяем является ли строка «#».
