Member 13526270 Ответов: 1

Как мне исправить свой код, чтобы он работал успешно


import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
    public static void main (String[] args) throws java.lang.Exception
    {
    	// your code goes here
    	Scanner a = new Scanner(System.in);
    	int t = a.nextInt();
    	while(t>0){
    	    int from= a.nextInt();
    	    int to= a.nextInt();
    	    int count=0;
    	    int sum=0,r;
    
    	    for (int i=from;i<=to ;i++ ){
    	        while(i>0){
    	        r=i%10;
    	        int p=r*r;
    	        sum= sum+p;
    	        i=i/10;
    	        if (sum==1){
                 count++;
                 break;
    	        }
                 else{
                 i=sum;
                 sum=0;
                 }
    	        }   
    	    }
    	    System.out.println(count);
    	    t--;
    	}
    	a.close();
    }
}

это мой код для сумасшедших чисел , я получаю ошибку времени выполнения, пожалуйста, помогите мне

Что я уже пробовал:

я пробовал код, написанный выше, но я не получаю ошибку времени выполнения

Patrice T

"я получаю ошибку времени выполнения"
Какое сообщение об ошибке и номер строки?

Пожалуйста, выберите: "я получаю ошибку времени выполнения" или "я не получаю ошибку времени выполнения".

1 Ответов

Рейтинг:
1

OriginalGriff

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали электронное письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а затем удвоить его и напечатать ответ, то если бы ввод / вывод был таким:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
private int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поставить точку останова на строке:
myaverage.DisplayAverage();

и запустите свое приложение. Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она на самом деле делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?

Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!

Да, я, вероятно, мог бы сказать вам, в чем "проблема" - но это не трудно сделать самому, и вы узнаете что-то действительно стоящее в то же время!