Как заполнить массив символов РАЗНЫМИ символами в java?


я только нашел, как заполнить массив символов одним и тем же символом, например:

    char[] charArray = new char[5];
    char charValue = 'A';
    Arrays.fill(charArray, charValue);
    System.out.println("The char array content is: " + Arrays.toString(charArray));
    
   // output: The char array content is: [A, A, A, A, A]

то, что я пробовал, это:

    char[] abc = new char[5];
    
    Scanner sc = new Scanner(System.in);
    
    String s;
    char c;
    
    for (int i = 0; i < abc.length; i++) {
        s = sc.next();
        if (s.length() == 1) {
            c = s.charAt(0);
            System.out.println("for position " + i + " the character is: " + c);
            Arrays.fill(abc[i], c);
            System.out.println("so we get the current array " + Arrays.toString(abc));
        } else {
            System.err.println("pls give just one charcter");
            break;
        }
    }

Я всегда получаю сообщение об ошибке, чтобы изменить массив abc с char[] на long[].\

Обновлено:
что я хочу для вывода, так это то, что я даю 5 символов (например, a, b, c, d, e) в конце у меня есть массив

abc[] = {a, b, c, d, e}

Заранее спасибо :)

напрямую используйте abc[i] = c; потому что Arrays.fill -> вместо этого понадобится массив, а не заполнение части массива.

Vivek Swansi 19.03.2022 16:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ты можешь использовать:

Arrays.fill(abc, c);

или просто:

abc[i]=c;

если вы хотите заполнить только указанную позицию массива

если я использую первый вариант, я получаю массив с теми же символами, но позвольте мне проверить второй вариант

alwan01 19.03.2022 16:40

Вы печатаете текущий массив каждый раз, поэтому я не был уверен, что вы хотите сделать. Вы хотите иметь несколько массивов с одинаковыми символами и печатать их или только один массив со всеми входными данными от пользователя?

YourHelper 19.03.2022 16:45

мне нужен один массив со всеми входными данными от пользователя, вы можете проверить мой EDIT в вопросе, там вы найдете пример

alwan01 19.03.2022 16:49
Ответ принят как подходящий

Ответ от YourHelper кажется правильным.

Избегайте char

К сожалению, даже исправленная версия вашего кода не работает с большинством символов. Тип char по существу сломан, начиная с Java 2, и устарел, начиная с Java 5.

Чтобы увидеть разрыв char, используйте символ, например «?».

Кодовая точка

Вместо этого используйте целые числа кодовая точка.

StringBuilder как результат

Что-то вроде этого непроверенного кода.

int limit = 5 ;
StringBuilder sb = new StringBuilder() ;

Scanner sc = new Scanner(System.in);

String input;
int codePoint;

for ( int i = 0 ; i < limit ; i++ ) {
    input = sc.next();
    int[] codePoints = input.codePoints().toArray() ;
    if ( codePoints.length == 1 ) {
        codePoint = codePoints[ 0 ] ;
        System.out.println( "for position " + i + " the input character is: " + Character.toString( codePoint ) );
        sb.appendCodePoint( codePoint );
        System.out.println("so we get the current result " + sb.toString() );
    } else {
        System.out.println( "Done: " + sb.toString() ) ;
        break;
    }
}
System.out.println( "Done: " + sb.toString() ) ;

См. этот запуск кода в прямом эфире на IdeOne.com.

for index 0 the input character is: H
so we get the current result H
for index 1 the input character is: ?
so we get the current result H?
for index 2 the input character is: l
so we get the current result H?l
for index 3 the input character is: l
so we get the current result H?ll
for index 4 the input character is: o
so we get the current result H?llo
Done: H?llo

Список строк (символов) как результат

Если вы хотите собрать каждый символ по отдельности, составьте список строк. Создайте строку каждой кодовой точки и добавьте в список. Опустите StringBuilder.

List< String > characters = new ArrayList <>() ;
…
characters.add( Character.toString( codePoint ) ) ;

См. пример этот код работает в прямом эфире на IdeOne.com.

for index 0 the input character is: H
so we get the current result [H]
for index 1 the input character is: ?
so we get the current result [H, ?]
for index 2 the input character is: l
so we get the current result [H, ?, l]
for index 3 the input character is: l
so we get the current result [H, ?, l, l]
for index 4 the input character is: o
so we get the current result [H, ?, l, l, o]
Done: [H, ?, l, l, o]

Имейте в виду, что в некоторых языках то, что вы можете воспринимать как одну «букву», на самом деле представляет собой комбинацию символов два, букву, за которой следует «комбинированный диакритический знак». Пример здесь. Обсуждение здесь.

Насколько я понимаю, вы пытаетесь позволить пользователю вводить данные в ваш массив символов один за другим... Если это то, что вы хотите, то это должно помочь.

char[] input = new char[5];
for( int i = 0; i < input.length; i++ ) {
     System.out.println("Enter only one character");
     input[i] = (char)System.in.read();
     System.out.println("Thus we have the current array as " + Arrays.toString(input));
}

Этот код принимает только один символ за раз, это быстрее, чем использование Scanner. Вот пробный запуск этого кода:

Enter a charcater
a
Thus we have cuurent array as [a, ., ., ., .]
Enter a charcater
b
Thus we have cuurent array as [a, b, ., ., .]
Enter a charcater
c
Thus we have cuurent array as [a, b, c, ., .]
Enter a charcater
d
Thus we have cuurent array as [a, b, c, d, .]
Enter a charcater
a
Thus we have cuurent array as [a, b, c, d, e]

Если вы хотите принять строку и изменить ее на массив символов, вы можете использовать функцию String toCharArray(), char[] input = "abcde".toCharArray()

в пробном прогоне есть опечатка, он должен быть текущим, а не текущим, но вы поняли

Hiten Tandon 19.03.2022 17:27

Другие вопросы по теме

Как преобразовать строку в многомерный массив символов
Поиск повторяющихся значений в нескольких 2D-массивах
MongoDB использует дублирующую функцию для печати другого поля
React - объединение позиционированного элемента из массива приведет к отображению следующего индекса
Почему мой объект дублируется, когда я пытаюсь добавить его в массив?
Объединить массив массивов, содержащих значение
Обновляйте массив только с помощью методов класса, когда массив является частной собственностью в классе
Проверьте имя пользователя, пароль - Форма входа с использованием React Hooks
Получение ошибки в "temparr.get(newwindex) = arr.get(i);" эта строка в коде //получение ошибки в этой строке при преобразовании списка в массив помощь для этого
Я хочу поменять местами символы строки в java, но он возвращает значение мусора, скажите, пожалуйста, что не так с моим кодом?