Я не могу сказать вам, почему «шеф-повар кода» не принимает его, потому что я не знаю этого сайта, поэтому я не знаю, как он компилирует код, , но Я могу сказать вам, почему вашВ общем, код неправильный, когда я компилирую его в обычную среду IDE, которая является более полезной информацией, поверьте мне.Я предлагаю вам написать эти упражнения в IDE (как я сделал), потому что в этом случае ваше оригинальное решение вообще не компилируется.
Вот проблемы с вашим кодом:
- Метод
Scanner.nextInt()
, а не Scanner.next_Int()
; - Было несколько строк, которые не были должным образом прокомментированы;
- Вы напечатали правильное и бесполезное неверное решение, не разделяя их, поэтомувозможно, шеф-повар прочитал это как одно число.Замените
System.out.print
на System.out.println
- О функции try-catch ...
- Вам не нужно объявлять, что ваш основной метод - бросать java.lang.Исключение;
- Никогда не отлавливайте универсальный суперкласс java.lang.Exception.Просто, никогда.
- Если вы ловите исключение, никогда не оставляйте тело улова пустым.Это бессмысленно.
- Сочетание «catch Exception + empty catch body», возможно, худшее, что можно сделать в Java.Он просто останавливает ваш код в любое время и по любой причине, и у вас нет шансов отладить его.
- Не ошибка, но вся часть «просканировать и если» может быть заменена одной строкой:
int c = Math.abs(scan.nextInt() - scan.nextInt())
Вам больше не нужны a
и b
после вычисления, и вы можете просто «убрать знак минуса» с абсолютным значением.
В любом случае, вот онокак бы я решил проблему с помощью алгоритма, который может генерировать один из всех приемлемых ответов. (Под этим я подразумеваю, что технически, чтобы удовлетворить запрос, вы всегда могли бы "выпустить его", например, всегда меняя последний.)
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
int c = Math.abs(scan.nextInt() - scan.nextInt()); //get sign-less difference
System.out.println(c);
ArrayList<Integer> digits = new ArrayList<>(); //creating a list for the digits
for (int i=c; i>0; i/=10){
digits.add(i%10); //adding a digit to the list
}
int randomIndex = (int) (Math.random()*digits.size()); //picking a random digit index
int randomDigit = digits.get(randomIndex), newDigit;
do {
newDigit = (int) (Math.random()*10); //Randomize a new digit
} while ( newDigit == randomDigit || (randomIndex==0 && randomDigit==0)); //Repeat if it is the same OR if it both the first one and it is 0
digits.set(randomIndex, newDigit); //update the list
int answer = 0;
for (int i = 0 ; i < digits.size(); i++ ){
answer += digits.get(i).intValue() * Math.pow(10,i); //Revert the list into a integer
}
System.out.println(answer);
}
Надеюсь, я помог!