Array Sort

Здравейте,
искам да попитам за някакво по-лесно обединение на 2 масива от това което видях аз.

List array2 = Stream.of(notZero, zero).flatMap(x -> x.stream()).collect(Collectors.toList());

Задачата беше призната за вярна, но имаше и този error в сайта. Error: Note: /tmp/tmpXcl3pj/ArraySort.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

Ето я и задачата: https://pastebin.com/EiW6qc0j

Здравей, ето този код показва обединение на 2 масива, надявам се да помогне:

import java.util.Scanner;

public class CombineLists {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String[] list1 = scanner.nextLine().split(",");
        String[] list2 = scanner.nextLine().split(",");
        String[] result = new String[list1.length + list2.length];

        int position = 0;

        for (int i = 0; i < result.length; i += 2) {
            result[i] = list1[position];
            result[i + 1] = list2[position];
            position++;
        }
        System.out.println(String.join(",", result));
    }


}

Здравей, не се получава или по-скоро аз не знам как да го напиша. Трябва ми масива с числа различни от 0 в началото на трети масив (result) и масива с числа равни на 0 в края. А и пробвах с масиви, но не се получава. После писах с ArrayList и тогава се получиха 2 масива. Въпроса е как да го обединя двата масива един след друг (първо числата различни от 0, после нулите)? Това което предложихте е за масиви, а не за ArrayList.

ползвай AddRange()
ако имаш да кажем List1 и List2 можеш да ги обединиш в List3
List3.AddRange(List1);
List3.AddRange(List2);

OOPs , това е на C#

на Java същото става с addAll()

List3.addAll(list1);
List3.addAll(list2);

Благодаря. Работи , но все пак дава тази грешка:

Status: Accepted

Error: Note: /tmp/tmpLrDwoN/ArraySort.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

дай целия код , не съм виждал до сега такава грешка

https://pastebin.com/5LCG3s1r ето го кода

https://pastebin.com/EiW6qc0j а това е с първия код, който пак имаше грешка , но все пак беше приета за вярна задачата

принтирай го със String.Join()

Здравей,
пробвах със String.Join() , но последния ми масив е ArrayList lis3, а този метод работи само със String масив, а не с ArrayList. Още тук дава грешка : “String print = String.join(”,",lis3);"

for(int i = 0 ; i < list3.size(); i++) {
if(i < list3.size() - 1) {
System.out.print(list3.get(i) + “,”);
}
else System.out.print(list3.get(i));
}

1 Like

Здравей, друг начин да принтираш ваче готовия ArrayList с нулите накрая е да го превърнеш в String array, ето тук е обяснено как: https://beginnersbook.com/2013/12/how-to-convert-arraylist-to-string-array-in-java/

Това е моето решение на тази задача, малко е тромаво но минава в Системата:

import java.util.Scanner;
import java.util.ArrayList;

public class ArraySort2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num = sc.nextLine();
String[] numbers = num.split(",");
int[] numbers2 = new int[numbers.length];

    ArrayList<Integer> zero = new ArrayList<>();
    ArrayList<Integer> nonzero = new ArrayList<>();


    for (int i= 0; i < numbers.length; i++) {
        numbers2[i] = Integer.parseInt(numbers[i]);
    }
    for (int x: numbers2) {
        if (x==0) {
            zero.add(x);
        } else{
             nonzero.add(x);
        }

    }

    nonzero.addAll(zero);
    String array[] = new String[nonzero.size()];


    for(int i = 0 ; i < nonzero.size(); i++) {
        array[i] = String.valueOf(nonzero.get(i));
        if (i > 0) {
            System.out.print(",");
        }
        System.out.print(array[i]);
    }
}

}

1 Like

Благодаря и на двама Ви!
Явно този проблем в сайта е от мен. Сложих кода на @miroslav.ivnv и пак даде грешка в сайта:
Status: Accepted
Error: Note: /tmp/tmp1HEO4F/ArraySort.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
Копирах кода и на @medon3 и там нямаше проблеми. Изглежда моя код в началото има някакви грешки, и като се зачетах в грешката използвам непроверени или опасни операции, което така и не разбрах за кое става въпрос. Все пак ви благодаря за обърнатото внимание.

2 Likes

Здравей, надявам се да съм помогнала, иначе се сетих после и за още един вариант накрая:

nonzero.addAll(zero);

    System.out.println(nonzero.toString().replace("[", "").replace(" ", "").replace("]", ""));
    }
}

Здравей, и аз по подобен начин го принтирах. Разликата беше, че аз правих още един масив.
list3.addAll(notZero);
list3.addAll(zero);
System.out.println(lis3.toString().replace("[", “”).replaceAll(" “, “”).replace(”]", “”));

Благодаря и за линка. Не знаех много за ArrayList.

1 Like

Благодаря, супер ясно и разбираемо си го описала.

1 Like

Благодаря и аз, радвам се че е било полезно :slight_smile: