как объединить две строки в одну с помощью метода chartAt () и массивов - PullRequest
0 голосов
/ 13 сентября 2018

, как упомянуто в названии, в каждой строке внутри цикла я получаю сообщение об ошибке (ожидается переменная), и это мой кодэто очень эффективно.

Ответы [ 7 ]

0 голосов
/ 13 сентября 2018

попробуйте это: объединить две строки без встроенного метода и без оператора +.

public static void main(String[] args) {
    String s = "ABC";
    String s1 = "DEF";
    String merge = "";
    char[]ch = new char[120];

    for(int i=0;i<s.length();i++) {
        ch[i] = s.charAt(i);
    }

    for(int i = 0;i<s1.length();i++) {
        ch[s.length()+i] = s1.charAt(i);
    }

    System.out.println(ch);
}
0 голосов
/ 13 сентября 2018

Я бы пошел с ответом @ Bartek, его простым и легко запоминающимся ... сложным способом добиться этого было бы

String a = "abcdefgh";
String b = "ijklmnopqrst";
int i = 0;
StringBuilder merge = new StringBuilder();
for (; i < a.length() && i < b.length(); i++) {
    merge.append(a.charAt(i)).append(b.charAt(i));
}
if (i < a.length())
    merge.append(a.substring(i));
if (i < b.length())
    merge.append(b.substring(i));

Только во избежание наличия условий внутри цикла for ... (оптимально тольков случае больших струн - струн очень разной длины)

0 голосов
/ 13 сентября 2018
    CharacterIterator a = new StringCharacterIterator("haaaaallo");
    CharacterIterator b = new StringCharacterIterator("12345");
    StringBuilder output = new StringBuilder();
    if(a.getEndIndex() < b.getEndIndex()) { //true -> swap a and b
        CharacterIterator holder = a;
        a = b;
        b = holder;
    }
    while (a.current() != CharacterIterator.DONE) {
        output.append(a.current());
        while (b.current() != CharacterIterator.DONE) {
            output.append(b.current());
            break;
        }
        a.next();
        b.next();
    }
    System.out.println(output.toString()); //h1a2a3a4a5allo

Показать "ручным способом".Используемые строки могут быть любого размера.

0 голосов
/ 13 сентября 2018

Еще один, поскольку вы управляете Strings внутри цикла, лучше использовать StringBuilder вместо String.

    String s = "ABC";
    String t = "DEFGH";
    StringBuilder merge = new StringBuilder();
    for (int i = 0; i < s.length() || i < t.length(); i++) {
        if (i < s.length()) {
            merge.append(s.charAt(i));
        }
        if (i < t.length()) {
            merge.append(t.charAt(i));
        }
    }

    System.out.println(merge.toString());
0 голосов
/ 13 сентября 2018

Вы можете просто использовать метод .concact () без использования цикла for:

, чтобы ваш код выглядел следующим образом: merge = s.concat (t);

0 голосов
/ 13 сентября 2018

Если вы хотите взять одну букву из первой строки, а затем из другой, попробуйте следующее:

for (int i = 0; i < s.length() || i < t.length(); i++) {
    if (i < s.length()) {
        merge += String.valueOf(s.charAt(i));
    }
    if (i < t.length()) {
        merge += String.valueOf(t.charAt(i));
    }
}

Это условие, позволяющее выполнять итерации до более длинного String финиша

i < s.length() || i < t.length()
0 голосов
/ 13 сентября 2018

Метод charAt (int index) возвращает символ по указанному индексу (ЭТО СЛУЧАЙ, А НЕ СЕТТЕР). Вы не можете использовать его как merge.charAt(i) = s.charAt(i/2)

один из самых простых способов выполнить такую ​​операцию - использовать строковую операцию, такую ​​как конкатенация, как показано в приведенном ниже примере.

 s="abc";
 t="def";
 System.out.print(s.concat(t));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...