Возможно, я перемудрил с нечетным элементом, но это проще чем обрабатывать два условия.
Что не так? )
package com.javarush.task.pro.task15.task1504;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
/*
Перепутанные байты
*/
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
String src = scanner.nextLine();
String dest = scanner.nextLine();
try (InputStream input = Files.newInputStream(Paths.get(src)); OutputStream output = Files.newOutputStream(Paths.get(dest))) {
byte buffer[] = new byte[9];
input.read(buffer);
byte newBuffer[] = new byte[buffer.length];
byte temp = 0;
try {
for (int i = 0; i < buffer.length; i++) {
if (buffer[i] % 2 == 1) {
temp = buffer[i];
newBuffer[i] = buffer[i + 1];
newBuffer[i + 1] = temp;
}
}
} catch (ArrayIndexOutOfBoundsException e) {
newBuffer[newBuffer.length - 1] = buffer[buffer.length - 1];
}
output.write(newBuffer);
}
}
}