Вводится из консоли дата (тип String). При посимвольном сравнении, на второй вводимой дате вылетает ошибка java.lang.OutOfMemoryError: Java heap space
import java.io.*;
import java.util.ArrayList;
class Goods implements Serializable { //класс "Товары". каждый товар - объект.
private String name;
private String currency;
private String date;
private int cost;
Goods(String name, String cost, String currency, String date) {
this.name = name;
this.cost = Integer.parseInt(cost);
this.currency = currency;
this.date = date;
}
String getName(){return name;}
int getCost(){ return cost;}
String getCurrency(){return currency;}
String getDate(){return date;}
}
class ShowGoods {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out, true);
String str;
String parts[] = new String[5];
ArrayList <Goods> myGoods = new ArrayList<>(); // массив объектов-товаров
Goods nextGood, comGood; // пременные для работы с объектами-товарами из массива
pw.println();
pw.println("Enter the purchase. Format: purchase 2019-04-25 12 USD 'Photo Frame' ");
pw.println("The input end sign is string 'stop'.");
do {
str = br.readLine();
if(str.compareTo("stop") == 0) break;
int i=0;
for (String retval : str.split(" ", 5)) {
parts[i] = retval;
// System.out.println(parts[i]);
i++;
}
switch(parts[0]) {
case "purchase":
Goods good1 = new Goods(parts[4], parts[2], parts[3], parts[1]);
if( myGoods.size() > 0) {
String goodDate, nextDate;
done:
for(int j=0; j < myGoods.size(); j++) { // сравнение даты вводимой покупки с уже введёнными
nextGood = myGoods.get(j);
goodDate = good1.getDate();
nextDate = nextGood.getDate();
for(int k=0; k<10; k++) { // посимвольное сравнение дат. Вот здесь вылетает OutOfMemoryError:
char g1 = goodDate.charAt(k);
char ng = nextDate.charAt(k);
if(g1 < ng) {
myGoods.add(j, good1);
break done;
}
}
if( j==(myGoods.size() - 1) ) myGoods.add(good1); // !!! только что еще раз прогнал, указало эту строку !!!
}
} else myGoods.add(good1);
break;
} while(str.compareTo("stop") != 0);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Требуется алгоритм который бы вытащил >3 <6 значное число из строки
Читаю книгу по паттернам (паттерны проектирования, Эрик и Элизабет Фримен42 ст
Хочу полученные результаты от сервера закинуть в Spinner, но выкидывает ошибку: