"Java-программа" нет вывода "пусто" - PullRequest
0 голосов
/ 11 июля 2019

"На самом деле я занимался проблемой из hackerEarth, связанной с некоторыми договоренностями, я сейчас noob, поэтому я прошу прощения за мой плохой код. Получаю пустой вывод" https://www.hackerearth.com/practice/data-structures/arrays/1-d/practice-problems/algorithm/colourful-lights/

     import java.util.Scanner;

    public class Practise2{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);

        int n = scan.nextInt();
        int m = scan.nextInt();
        int ArrForN[] = new int[n];
        int ArrForM[] = new int[m];
        int numb = 0 , pass = 1, store = 0 , val = 1 ;

        for(int i = 0; i < n; i++)
            ArrForN[i] = scan.nextInt();

        for(int j = 0; j < m ; m++)
            ArrForM[j] = j+1; 
        int y = 0;

        for(int x = 0 ; x < n ; x++){
              if(x < val*m) {    
                if(ArrForN[x] == 0){
                    ArrForN[x] = ArrForM[y];
                    numb++ ;
                    pass = pass* numb;
                    store = pass;
                    System.out.println(store);
                    y++ ;
                }
                else if(ArrForN[x] != 0)
                    y++ ;
              }
             else if(x == val*m){
               if(ArrForN[x] == 0){ 
                 System.out.println(store);  
                 val++ ;
                 numb = 0; 
                 pass = 0;
                 y = 0;    
                 ArrForN[x] = ArrForM[y];
                 numb++ ;
                 pass = pass* numb;
                 store = pass;
                 System.out.println(store); 
                 y++ ;
               }  
               else if(ArrForN[x] != 0)  
                   y++ ;

            }
        } 

    }
 }

P.S. Я уже отладил это, и ничего не случилось

1 Ответ

0 голосов
/ 11 июля 2019

Сначала в этой строке:

for(int j = 0; j < m ; m++)

Вы должны изменить m на j:

for(int j = 0; j < m ; j++)

Поскольку это приводит к бесконечному циклу, я думаю, это понятно почему.
Во-вторых, внутри этого цикла:

for(int x = 0 ; x < n ; x++){
    .............
}

все ваши System.out.println() звонки включены в 2 if заявления:

if(ArrForN[x] == 0){
    ...........
}

, которые никогда не равны true, если пользователь не назначает 0 ни одному из элементов ArrForN массива при запуске программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...