Код выполняется до того, как я нажму клавишу ввода после ввода - PullRequest
0 голосов
/ 02 августа 2020

введите здесь описание изображения

Следующий код позволяет найти максимальное число из массива размера N + 1, исключая число N. После того, как я запустил код и скопировал и вставил образец ввода 3 тестовых примеров ... некоторые ответы тестовых случаев уже показаны, как показано на прилагаемом рисунке. Почему это происходит и как этого избежать ???

package beginner;

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

public class FindMax { 

    public static void main(String[] args) throws IOException {
        
        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        
        int t = Integer.parseInt(sc.readLine());
        
        while(t>0) {
            
            String [] in = sc.readLine().split(" ");
            int [] arr = new int[in.length];
            
            for(int j=0; j<in.length; j++) {
                arr[j] = Integer.parseInt(in[j]);
            }
            System.out.println(findMax(arr));
            t--;
        }
    
    }

    private static int findMax(int[] arr) {
        int max = Integer.MIN_VALUE;
        int n = arr.length-1;
        
        for(int j=0; j<arr.length; j++) {
            if(arr[j] == n) continue;
            
            if(max < arr[j]) max = arr[j];
        }
        
        return max;
    }

}

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Попробуйте следующий код (он напечатает min, max, avg, sum, пропустив часть, которая вам не нужна):

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

public class Main {
    public static void main(String[] args) throws IOException {
        
        System.out.println("Enter how many numbers you want to enter : ");
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int k = Integer.parseInt(str);
        int arr[] = new int[k];
        
        System.out.println("Enter the numbers : ");
        for(int i=0;i<k;i++) {
            BufferedReader br1= new BufferedReader(new InputStreamReader(System.in));
            str=br1.readLine();
            arr[i] = Integer.parseInt(str);
        }
        
        findMax(arr);
    }
        
    private static void findMax(int[] arr) {
        int sum=0,i,count=0,max,min,n;
        int len = arr.length;            
        float avg;
        
        max = arr[0];
        min = arr[0];
        while(count < len) {
            sum += arr[count];
            if(min > arr[count])
                min = arr[count];
            if (max < arr[count])
                max = arr[count];
            count += 1;
        }
        
        avg = sum/len;
        
        System.out.println("\nPrinting the results : \n");
        System.out.println("Sum     = " +sum);
        System.out.println("Average = " +avg);
        System.out.println("Maximum = " +max);
        System.out.println("Minimum = " +min);
    }
}

Вывод:

Enter how many numbers you want to enter :                                                                                                                   
3                                                                                                                                                            
Enter the numbers :                                                                                                                                          
1                                                                                                                                                            
2                                                                                                                                                            
3                                                                                                                                                            
                                                                                                                                                             
Printing the results :                                                                                                                                       
                                                                                                                                                             
Sum     = 6                                                                                                                                                
Average = 2.0                                                                                                                                              
Maximum = 3                                                                                                                                                
Minimum = 1  
0 голосов
/ 02 августа 2020

Поскольку текст, который вы вставляете в консоль, содержит символы новой строки, он запускает nextLine для возврата, а результат findMax печатается после этого.

...