Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.Arrays.copyOf(Arrays.java:3536)
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:227)
at java.base/java.lang.AbstractStringBuilder.appendNull(AbstractStringBuilder.java:637)
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:590)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
at com.codegym.task.task32.task3213.Solution.decode(Solution.java:36)
at com.codegym.task.task32.task3213.Solution.main(Solution.java:18)
Process finished with exit code 1
package com.codegym.task.task32.task3213;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Arrays;
import java.util.Collections;
/*
Caesar cipher
*/
public class Solution {
public static void main(String[] args) throws IOException {
StringReader reader = new StringReader("Khoor#Dpljr#&C,₷B'3");
System.out.println(decode(reader, -3)); // Hello Amigo #@)₴?$0
}
public static String decode(StringReader reader, int key) throws IOException {
/**
* return the decrypted string stored inside the reader
* take the string from the string reader
* transform it into a character array
* take each character and shift it according to int key
* transform the character array back into a string
* return that string
* if not possible return a string anyway
*/
String result = new String();
if (reader != null) {
BufferedReader bufferedReader = new BufferedReader(reader);
StringBuilder sb = new StringBuilder();
while (bufferedReader.ready()){
sb.append(bufferedReader.readLine());
}
char[] charsOfString = sb.toString().toCharArray();
for (int i = 0; i < charsOfString.length; i++) {
int charValue = charsOfString[i] + key;
charsOfString[i] = (char) charValue;
}
result = Arrays.toString(charsOfString);
}
return result;
}
}