package Algoritmy;
import java.io.*;
import java.nio.Buffer;
import java.util.ArrayList;
public class ContinuousBackpack {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String strochka = reader.readLine();
String arrayStr[] = strochka.split(" ");
int AmountItems = (int)Integer.parseInt(arrayStr[0]);
int SizeBackpack = (int)Integer.parseInt(arrayStr[1]);
int[][] ItemsVolume = new int[AmountItems][2];
String record;
String[] data;
for (int i = 0; i < AmountItems; i++) {
record = reader.readLine();
data = record.split(" ");
ItemsVolume[i][0] = Integer.parseInt(data[0]);
ItemsVolume[i][1] = Integer.parseInt(data[1]);
}
int p1;
int p2;
for (int j = 0; j < AmountItems - 1; j++) {
for (int i = 0; i < AmountItems - 1; i++) {
if (ItemsVolume[i][0] / ItemsVolume[i][1] > ItemsVolume[i + 1][0] / ItemsVolume[i + 1][1]) {
p1 = ItemsVolume[i + 1][0];
p2 = ItemsVolume[i + 1][1];
ItemsVolume[i + 1][0] = ItemsVolume[i][0];
ItemsVolume[i + 1][1] = ItemsVolume[i][1];
ItemsVolume[i][0] = p1;
ItemsVolume[i][1] = p2;
}
}
}
int cost = 0;
for (int i = 0; i < AmountItems && SizeBackpack != 0; i++) {
if (ItemsVolume[i][1] > SizeBackpack) {
cost = +ItemsVolume[i][0];
SizeBackpack = SizeBackpack - ItemsVolume[i][1];
} else {
cost = +(ItemsVolume[i][1] / SizeBackpack) * ItemsVolume[i][0];
SizeBackpack = 0;
}
}
System.out.println(cost);
}
}
Artur Latypov
35 уровень
Выводит ошибку: при введении "3 50" Exception in thread "main" java.lang.NumberFormatException: For input string: "3 50" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) at java.base/java.lang.Integer.parseInt(Integer.java:652) at java.base/java.lang.Inte
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
7 марта 2021, 20:08
java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68
Попытались привести строку вида 3 50 к типу интеджер и получили ошибку
0
Artur Latypov
7 марта 2021, 20:12
Но ведь я создал массив стрингов arrayStr, "3" и "50", а потом с помощью parse привожу стринг в Integer, в чем здесь ошибка, была похожая программа с таким куском(см в закрепе), все работало, что здесь не так?
String strochka;
String arrayStr[];
int mas[][] = new int[column][2];
for (int i = 0; i < column; i++) {
strochka = reader.readLine();
arrayStr = strochka.split(" ");
mas[i][0] = Integer.parseInt(arrayStr[0]);
mas[i][1] = Integer.parseInt(arrayStr[1]);
}
0
KIRAРазработчик в prosv.ruExpert
7 марта 2021, 20:14
Это для примера, цифры будут отличаться. Стектрейс указывает на ошибку которая произошла и где
посмотрите где у вас ошибка
0
Artur Latypov
7 марта 2021, 20:16
Разобрался, спасибо!
0