Error: The operator += is undefined for the argument type(s) int,int

510
12 октября 2021, 12:10

Алёна собирает вещи в отпуск. С собой в самолёт она может взять ручную кладь и багаж. Для ручной клади у Алёны есть рюкзак, а для багажа – огромный чемодан. По правилам перевозки масса ручной клади не должна превосходить S кг, а багаж может быть любой массы (за сверхнормативный багаж Алёна готова доплатить). Разумеется, наиболее ценные вещи – ноутбук, фотоаппарат, документы и т. д. – Алёна хочет положить в ручную кладь. Алёна разложила все свои вещи в порядке уменьшения их ценности и начинает складывать наиболее ценные вещи в рюкзак. Она действует следующим образом – берёт самый ценный предмет, и если его масса не превосходит S, то кладёт его в рюкзак, иначе кладёт его в чемодан. Затем она берёт следующий по ценности предмет, если его можно положить в рюкзак, то есть если его масса вместе с массой уже положенных в рюкзак вещей не превосходит S, то кладёт его в рюкзак, иначе в чемодан, и таким же образом процесс продолжается для всех предметов в порядке убывания их ценности. Определите вес рюкзака и чемодана после того, как Алёна сложит все вещи. Первая строка входных данных содержит число S – максимально разрешённый вес рюкзака. Во второй строке входных данных записано число N – количество предметов.

Ввод:20,5,6,10,5,2,3

Вывод:18,8

Примечание:Максимально возможная масса рюкзака 20 кг. Дано 5 предметов весом 6, 10, 5, 2, 3. Сначала предмет весом 6 кладётся в рюкзак, затем предмет весом 10 тоже кладётся в рюкзак. Предмет весом 5 нельзя положить в рюкзак, так как тогда вес рюкзака станет 21 кг, поэтому предмет весом 5 кладётся в чемодан. Затем предмет весом 2 кладётся в рюкзак, а предмет весом 3 – в чемодан. Вес рюкзака 6 + 10 + 2 = 18, вес чемодана 5 + 3 = 8.

import java.util.Scanner;
class Main {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int max = scan.nextInt();
    int[] backpuck = new int[max];
    int suitcase = 0;
    int N = scan.nextInt();
    for (int i = 1; i < N; i++) {
        int cennost1 = scan.nextInt();
            if(cennost1 < max) {
                backpuck = cennost1;
            }else{
                suitcase = cennost1;
            }
        int cennost2 = scan.nextInt();
            if(cennost2 < max) {
                backpuck += cennost2;
            }else{
                suitcase = cennost2;
            }
        int cennost3 = scan.nextInt();
            if(cennost3 < max) {
                backpuck += cennost3;
            }else{
                suitcase = cennost3;
            }
        int cennost4 = scan.nextInt();
            if(cennost4 < max) {
                backpuck += cennost4;
            }else{
                suitcase = cennost4;
        int cennost5 = scan.nextInt();
            if(cennost5 < max) {
                backpuck += cennost5;
            }else{
                suitcase = cennost5;
        }
    }
    System.out.println(buckpuck);
    System.out.println(suitcase);
    }
}
}

Error: The operator += is undefined for the argument type(s) int,int

Answer 1

Интересно, что вы будете делать, если количество вещей возрастет или поменяется количество сумок? Это все вполне ужасно. никогда так не пишите...

class Main {
    public static void main(String[] args) {
        calculate(20, new int[]{6,10,5,2,3});
    }
    private static void calculate (int maxWeight, int[] weights){ 
        Baggage baggage1 = Baggage.of(null, "Чемодан", Integer.MAX_VALUE);
        Baggage baggage2 = Baggage.of(baggage1, "Рюкзак", maxWeight);
        for (int weight : weights) baggage2.addThing(weight);
        System.out.println(baggage1);
        System.out.println(baggage2);
    }
}
interface Baggage {
    void addThing (int weight);
    //Design pattern 'Factory Method'
    static Baggage of(Baggage nextBaggage, String name, int maxWeight){
        return new BaggageImpl(nextBaggage, name, maxWeight);
    }
}
class BaggageImpl implements Baggage{    
    private final Optional<Baggage> nextBaggage;    
    private final String name;
    private final int maxWeight;
    private int currentWeight;
    public BaggageImpl(Baggage nextBaggage, String name, int maxWeight) {
        this.nextBaggage = Optional.ofNullable(nextBaggage);
        this.name=name;
        this.maxWeight = maxWeight;        
        this.currentWeight=0;
    }
    @Override
    public void addThing (int weight){
        if (weight+currentWeight <= maxWeight) currentWeight+=weight;
        else nextBaggage.ifPresent(b->b.addThing(weight));
    }
    @Override
    public String toString() {
        return name + " (" + currentWeight+" kg.)";
    }
}
Answer 2

Для данной конкретной задачи могу предложить решение без применения ООП:

public static void main(String[] args) {
    final int maxWeightBackpack;
    int weigthBackpack=0,weightSuitpack=0; // вес рюкзака и вес чемодана
    Scanner sc = new Scanner(System.in);
    maxWeightBackpack = sc.nextInt(); // Сначала максимальный вес рюкзака
    int HMThings = sc.nextInt(); // Затем количество вещей
    for(int i=0;i<HMThings;i++) { 
        int nextWeigthOfThing = sc.nextInt();
        if(weigthBackpack+nextWeigthOfThing<=maxWeightBackpack) { // Можем ли мы положить это в рюкзак?
            weigthBackpack+=nextWeigthOfThing; // Можем - кладем
        }
        else {
            weightSuitpack+=nextWeigthOfThing; // Не можем - кладем в чемодан
        }
    }
    System.out.println("weigthBackpack is: "+weigthBackpack);
    System.out.println("weightSuitpack is: "+weightSuitpack);
}
READ ALSO
Как в JTextField сделать ввод русских букв независимым от раскладки клавиатуры?

Как в JTextField сделать ввод русских букв независимым от раскладки клавиатуры?

Как в JTextField сделать ввод русских букв независимым от раскладки клавиатуры?

175
Buffered Reader

Buffered Reader

считываю информацию из файла, после этого агрегирую её и записываю в отдельные файлыОднако при записи возникает проблема, почему-то программа...

212
не пойму что означает эта ошибка

не пойму что означает эта ошибка

написал код, сделал конфиг, запускаю из командной строки, а он мне выдает следующее

118
Как в Android Studio закрепить положение component tree?

Как в Android Studio закрепить положение component tree?

Так получилось, что после некоторых действий с android studio элемент component tree стал небольшим независимым окошком с возможностью передвижения,...

205