2009-12-09 2 views
-2

Реализовать методПри поиске через ArrayList

public void search (String searchString) { } 

, чтобы итерацию по ArrayList ноты до тех пор, пока не найдет записку, содержащую SearchString. Затем он должен напечатать либо найденный элемент, либо сообщение «String not found».

До сих пор у меня есть:

import java.util.ArrayList; 
import java.util.Iterator; 

/** 
* A class to maintain an arbitrarily long list of notes. 
* Notes are numbered for external reference by a human user. 
* In this version, note numbers start at 0. 
* 
* @author David J. Barnes and Michael Kolling. 
* @version 2008.03.30 
*/ 
public class Notebook 
{ 
    // Storage for an arbitrary number of notes. 
    private ArrayList<String> notes; 

    /** 
    * Perform any initialization that is required for the 
    * notebook. 
    */ 
    public Notebook() 
    { 
     notes = new ArrayList<String>(); 
    } 

    /** 
    * Store a new note into the notebook. 
    * @param note The note to be stored. 
    */ 
    public void storeNote(String note) 
    { 
     notes.add(note); 
    } 

    /** 
    * @return The number of notes currently in the notebook. 
    */ 
    public int numberOfNotes() 
    { 
     return notes.size(); 
    } 

    /** 
    * Show a note. 
    * @param noteNumber The number of the note to be shown. 
    */ 
    public void showNote(int noteNumber) 
    { 
     if(noteNumber < 0) { 
      // This is not a valid note number, so do nothing. 
      System.out.println("invalid index given"); 
     } 
     else if(noteNumber < numberOfNotes()) { 
      // This is a valid note number, so we can print it. 
      System.out.println(notes.get(noteNumber)); 
     } 
     else { 
      System.out.println("there are fewer items in the notebook"); 
      // This is not a valid note number, so do nothing. 
     } 
    } 

    public void removeNote(int noteNumber) 
    { 
     if(noteNumber < 0) { 
      // This is not a valid note number, so do nothing. 
      System.out.println("invalid index given"); 
     } 
     else if(noteNumber < numberOfNotes()) { 
      // This is a valid note number. 
      notes.remove(noteNumber); 
     } 
     else { 
      System.out.println("there are fewer items in the notebook"); 
      // This is not a valid note number, so do nothing. 
     } 
    } 

    /* Edit note. 
    * I tried to improve the formatting of the code below, but I'm completely 
    * unable to figure out how on earth anything of that should make sense 
    * and therefore the indentation is completely without any meaning. 
    */ 
    public void search (String searchString) 
    { 
     for each notes in ArrayList {  
      if notes = searchString;   
       System.out.println("String found"); + searchString   
       return end 
      } 
     if} 
     System.out.println("String not found"); 
    } 
} 

Но это не работает, и я не в состоянии работать его.

+2

ли "если ноты ArrayList (SearchString <= 0)" даже компилировать? – jball

+0

он, похоже, не компилируется. – user215049

+0

На каком языке вы используете? –

ответ

3

Чтобы перебрать список массива, вы можете использовать 'for-each' loop:

for (String note: notes) { 
    // Do something with note 
} 

Это очень простой синтаксис. Вы видели это раньше? Если нет, вы должны начать с того, что прочитали очень простой учебник по Java, прежде чем пытаться выполнить эту домашнюю работу.

+0

Поскольку это Java, я не уверен, что это поможет. – Andrey

+0

Сначала я не заметил общий ArrayList и подумал, что это C#. ArrayList не является общим для C# - общая версия называется List . –

5

Несколько проблем:

  1. Ваш search метод является на самом деле за пределами класса.
  2. Тело вашего метода поиска не имеет никакого смысла.

Если вы рассчитываете на обезьян, пишущих Шекспира, вы будете ждать некоторое время.

2

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

3

По существу, вам нужно посмотреть на каждый элемент в ArrayList и проверить, соответствует ли оно условию поиска. В псевдокоде

for each note in notes 
{ 
    if note equals searchString then 
     print "Found " + searchString 
     return 
    end if 
} 

print "not found" 

Учитывая, что основной контур, хочу взять второй удар при кодировании его в Java?

2

Следует ли проверять, соответствует ли вся заметка вашей поисковой строке, или если примечание содержит вашу строку поиска?

i.e. заданные примечания «foobar», «baz», «spam», должен ли поиск на «foo» возвращать «foobar» или не совпадать ни с чем?

так в псевдокоде:

for each note in notes 
{ 
    if searchstring in note 
    { 
      print "Found :"+note 
    } 
} 
Смежные вопросы