Регистрация
27 Ноя 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
Задача:Ввод и вывод данных производятся через стандартные потоки ввода-вывода.

На планете Роботов очень не любят десятичную систему счисления, поэтому они попросили Вас написать программу, которая заменяет все встречающиеся в тексте числа на эти же числа, но в двоичной системе счисления.

Входные данные

Единственная строка, состоящая из любых символов. Длина строки не превышает 255 символов. Гарантируется, что во всех числах нет ведущих нулей.

Выходные данные

Выведите преобразованную строку.Пример ввода:

2+4

Пример вывода:

10+100Мой код: import java.util.Scanner;



class MyProgram{

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

String[] input = scan.nextLine().split("\\+");

StringBuilder binaryNumber = new StringBuilder();

for(int i = 0; i < input.length; i++){

String trash = "^&JKjdkdl;?.,lkPkkdfl";

int number = Integer.parseInt(input.replaceAll(trash, ""));

binaryNumber.append(Integer.toBinaryString(number));

if (i < input.length - 1) {

binaryNumber.append("+");

}

}

System.out.println(binaryNumber);

}

} Проблема:

Во втором тесте появляется исключение:Failed test #2 of 4. Runtime error



Error:

Exception in thread &#34;main&#34; java.lang.NumberFormatException: For input string: &#34;6^&amp;678JKjdkdl;?.,lk879Pk1kdfl4839&#34;

at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.base/java.lang.Integer.parseInt(Integer.java:652)

at java.base/java.lang.Integer.parseInt(Integer.java:770)

at MyProgram.main(Main.java:10)Что именно вводиться в тесте - неизвестно, кроме первого теста(это из примера). Если правильно понял, это из-за попытки преобразовать строку &#34;6^&amp;678JKjdkdl;?.,lk879Pk1kdfl4839&#34; в число. Я пробывал их просто удалить, но не получилось. Можете подсказать, что нужно сделать. Заранее всем благодарен.
 
что такое вот это?
String trash = &#34;^&amp;JKjdkdl;?.,lkPkkdfl&#34;;
 
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

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


Scanner input = new Scanner(System.in);
String s = input.nextLine();
Pattern regex = Pattern.compile("[0-9]+");
Matcher matcher = regex.matcher(s);
StringBuffer stringBuffer = new StringBuffer();

while(matcher.find()){
matcher.appendReplacement(stringBuffer,Integer.toBinaryString(Integer.parseInt(matcher.group())));
}
matcher.appendTail(stringBuffer);
System.out.println(stringBuffer);

}
}
 
Программа не должна кидать исключение при некорректно сформированной строке. Ловите и выводите ошибку.
 
Интересно, но было бы в принципе неплохо изучить язык программирования C++
 
Назад
Сверху