2013-06-24 2 views
1

Я только начал изучать Java и добрался до массивов, я готовил эту программу (из книги) о замене пространства '' на '.' (точки), и я не могу понять эту конкретную строку (ее не упоминается даже в книге, которую я изучаю).Пожалуйста, объясните эту конкретную строку в моем Java-коде?

Пожалуйста, помогите мне.

class SpaceRemover{ 
    public static void main(String[] args){ 
     String mostFamous = "Hey there stackoverFLow  "; 
     char [] mf1 = mostFamous.toCharArray(); 
     for(int dex = 0; dex<mf1.length;dex++) 
     { 
      char current = mf1[dex]; // What is happening in this line ?? 
      if (current != ' ') { 
       System.out.print(current); 

      } 
      else{ 
       System.out.print('.'); 

      } 
     } 
     System.out.println(); 


     } 
    } 

Кто-то пожалуйста, объясните, что происходит в «полукокса ток = МФ1 [тны];»

Большое спасибо за ваше время.

+0

Это поможет понять это ясно: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays .html –

ответ

1

В принципе, строка в java представляет собой массив символов. Итак, что делает предыдущий код, он преобразует строку в массив символов, чтобы впоследствии получить доступ к каждому индексу массива. Затем код входит в цикл for, чтобы перебирать все индексы массива char.

Предполагая, что это уже ясно, код теперь создает переменную char, которая содержит текущий индекс массива.

char current = mf1[dex]; 

mf1 - ваш массив символов, который представляет строку. dex - текущий индекс char, который определяется циклом for. Таким образом, мы можем проверить каждый символ (букву) массива char. Теперь, если char «current» - пустое место, мы можем заменить его точкой.

+0

Большое спасибо за действительно хорошее объяснение. Я записал ваш ответ ... Это заставило меня понять, что концепция действительно хорошая. Благодаря :) – yeahhhhRIGHT

0

Он получает символ в индексе idx в массиве mf1 и сохраняет его значение в переменной current.

0

Цикл for-loop выполняет итерацию строки mostFamous символ по характеру.

Строка, которую вы просите, - это получить символ в определенном положении. Функция похожа на JavaScript-х charAt(i)

2

Вы получаете dex й символ/элемент в массиве символов mf1 (отсюда mf1[dex]) и хранить его в локальной переменной current.

+0

спасибо за все ответы :) – yeahhhhRIGHT

0

После этого заявления, char [] mf1 = mostFamous.toCharArray();

mf1[0]=H, mf1[1]=e, mf1[1]=y... 

так на этой линии, char current = mf1[dex]; так, в первой итерации, current=H, вторая итерация current=e...

+0

Спасибо за ясное объяснение :) – yeahhhhRIGHT

0
char current = mf1[dex]; 

Эта линия получает значения из mf1 массивов символов и присваивать переменной current согласно dex, dex работает как индекс для arr ay, и он увеличивается с ходом цикла.

+0

yup. спасибо bhai :) Я понял сейчас – yeahhhhRIGHT

0

Линия

char current = mf1[dex]; 

помещается внутрь для цикла, где переменная Dex увеличивается на единицу каждый раз, когда цикл повторяется. Переменная dex представляет собой индекс на основе нуля массива. В левой части оператора присваивания (=) вы объявляете переменную с именем current типа char. С правой стороны оператора присваивания вы получаете доступ к dex-го символа вашего CharArray, если вы начинаете считать с нуля. Оператор присваивания связывает указанную вами переменную со значением символа, указанного вами с правой стороны.

Например, при первом запуске цикла dex будет начинаться с 0, поэтому mf1[dex] (или mf1[0]) является просто «H».

+0

Большое спасибо за ваш ответ. Я понял. :) – yeahhhhRIGHT

0

Здесь раствор

class SpaceRemover{ 

    public static void main(String[] args){ 

     String mostFamous = "Hey there stackoverFLow  "; 

      char [] mf1 = mostFamous.toCharArray(); 

      // mf1 contains={'H', 'e','y',' ','t','h',.........} 

      for(char current: mf1) 

      { 

     //the for-each loop assigns the value of mf1 variable to the current variable 

       //At first time the 'H' is assigned to the current and so-on 

       System.out.print(current==' '?'.':current); 

      } 

      System.out.println(); 



      } 

     } 
    } 
0

Это присваивает элемент массива charmf1 на индекс dex к char переменной current.

Обратите внимание, что цикл for и эта строка могут быть упрощены с помощью синтаксиса foreach; эти два кодовых блоков эквивалентны:

// Your code 
for(int dex = 0; dex<mf1.length;dex++) { 
    char current = mf1[dex]; 

// Equivalent code 
for (char current : mf1) { 

Но дальше, весь метод может быть заменен на одну строку:

public static void main(String[] args){ 
    System.out.println("Hey there stackoverFLow  ".replace(" ", ".")); 
} 
0
char current = mf1[dex]; 

это будет возвращать элемент обугленного в массив символов, индекс которого Dex

Это довольно простое использование массива.

Удачи вам в учебе.

+0

Спасибо, сэр. Да, я сделаю все возможное. :) – yeahhhhRIGHT

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