2016-01-03 2 views
-5

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

Я не понимаю, что такое String result = "";. Это null?

public String stringBits(String str) 
{ 
    String result = ""; 
    int i = str.length(); 
    for(int j = 0; j<i; j+=2) 
    { 
     result = result + str.substring(j, j+1); 
    } 
    return result; 
} 

Любая помощь будет оценена по достоинству. Спасибо

+0

Отформатируйте свой код. – theTechnoKid

+2

'' '' - пустая буквальная строка. Это не пусто. 'String result = null;' установит строку в значение null. или если у вас есть «частный результат String», как объявление в классе, это приведет к тому, что результат будет равен null (значение по умолчанию для не назначенных ссылочных полей). –

+5

Вы ли результат null - и я хочу предложить вам не спросить об этом в будущем, а скорее *** test *** it. У вас есть удивительно мощная лаборатория у вас под рукой, поэтому используйте ее. Поэкспериментируйте, играйте, пишите код, запускайте его, меняйте его, подталкивайте его до предела, а затем выходите за пределы, узнайте, что работает, что не работает. Поверьте мне, вы не собираетесь взорвать свой компьютер, вы не собираетесь приносить гибель и проклятие от усилий. Для простых вопросов, на которые можно ответить при тестировании, не спрашивайте нас здесь - узнайте сами. Это то, чему учатся и что такое программирование. –

ответ

1

Вот прокомментировал версию кода вы публикуемую:

// Declare a public method stringBits that accepts a String str 
public String stringBits(String str) 
{ 
    // Declare a String literal named result containing an empty string ("") 
    String result = ""; 

    // Store the length of the passed String str in integer i 
    int i = str.length(); 

    // Loop while j (loop index) is less than the length of str (j < i) 
    // j starts at 0 (int j = 0) 
    // Increase j by 2 each iteration (j += 2) 
    for(int j = 0; j < i; j += 2) 
    { 
     // Extract the character between index j and j+1, append to result 
     result = result + str.substring(j, j+1); 
    } 

    // Once the loop has finished, return the result string to the calling method 
    return result; 
} 

Как другие упомянутый, String result = "" просто означает определенную строку и устанавливает значение в значение "". Строки могут содержать нулевые символы и по-прежнему быть действительными, а не null.

Удачи вам! Такие вещи скоро придут естественным образом.

0

String result = "" просто означает, что строка пуста. Это не null. Вы можете поместить любой текст между этими двумя кавычками.

4

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

Лучше было использовать StringBuilder, и добавить отдельные символы, а не подстроки, к результату:

StringBuilder result = new StringBuilder(); 
for(int j = 0; j < i; j += 2) { 
    // Append character at j to result 
    result.append(str.charAt(j)); 
} 
return result.toString(); 
1

Код принимает строку String в качестве аргумента, выдает символы по четным индексам String str и присоединяет их к результату String. Например, если ваш String str равен «abcdef», значение вашего результата String будет «ace».

Смежные вопросы