T - количество тестов. N - размер массива, а k - количество поворотов массива вправо. Как это сделать в java - PullRequest
0 голосов
/ 25 января 2020

Я использовал Сканер для ввода массива. Но теперь я получаю сообщение об ошибке: Ошибка выполнения. java .util.NoSuchElementException

Трассировка стека: исключение в потоке "main" java .util.NoSuchElementException Вход:

1
5 2
1 2 3 4 5

Выход

4 5 1 2 3

МОЙ код:

class TestClass {
public static void main(String args[] ) throws Exception {

    Scanner sc=new Scanner(System.in);
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int T=Integer.parseInt(br.readLine());
    int i,j;
    for(i=0;i<T;i++) {
        String[] str=br.readLine().split(" ");
        int N=Integer.parseInt(str[0]);
        int K=Integer.parseInt(str[1]);
        int[] arr=new int[N];
        for(j=0;j<N;j++) {
            arr[j]=sc.nextInt();
        }
        int counter=0;

        if(counter!=K){
            int last=arr[N-1];
            for(j=N-1;j>0;j--){
                arr[j]=arr[j-1];
            }
            arr[0]=last;
            counter++;
        }
        else{
            System.out.println();
            for(j=0;j<N;j++){
                System.out.print(arr[j]);
            }
        }
   }

}

1 Ответ

0 голосов
/ 25 января 2020
arr[j] = Integer.parseInt(br.readLine());

br.readLine() читает по одной строке за раз. Если строка содержит «1 2 3 4 5», она выдаст исключение, которое вы получаете. Вам нужно разделить эту строку на массив, который содержит число как String в качестве его элементов, а затем применить parseInt() к каждому из элементов.

List<Integer> data = Arrays.stream(br.readLine().split(" "))
   .map(str -> Integer.parseInt(str)
   .collect(COllectors.toList())

Теперь вы можете обрабатывать элементы.

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