Pętla for zapełniająca tablicę

0

Mam sobie taką pętlę, która przeszukuje tabelę na stronie pod kątem czy zawiera np. imię Ania. Jeżeli zawiera to zwraca 'return celtexty;'

for (int row = 0; row < rows_count; row++) {
				List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td"));
				int columns_count = Columns_row.size();
				for (int column = 0; column < columns_count; column++) {
					String celtext = Columns_row.get(column).getText();
					if (celtext.equals(wybierzWartosc)) {
						String celtexty = Columns_row.get(column).getText();
						return celtexty;
					}
				}

Pytanko jest następujące: co zrobić jeżeli w owej tabeli są dwa identyczne imiona Ania i chciałbym je uprzednio 'upchnąć' w array-a a następnie zwrócić? Czy i ewentualnie jak mogę to zrobić?/

P.S. wiem że nie ma to najmniejszego sensu że dwa takie same imiona i jeszcze pakować je w tablicę, nie mniej jednak jeżeli są to takie samie string ale ma znaczenie wielkość liter.

1

Nie wiem, czy zrozumiałem pytanie, ale spróbuję pomóc.

  • w metodzie zmień zwracany typ z String na String[] lub List<String> (jak wolisz)
  • Przed pętlą utwórz listę List<String> lista
  • W miejsce return celtexty daj lista.add(celtexty)
  • Na koniec pętli zwracaj return lista lub (jeżeli dałeś zwracany typ String[]) return lista.toArray(new String[0])

Drobna porada: mieszasz języki w nazwach zmiennych: raz masz angielskie column i row, innym razem polskie wybierzWartosc. Trzymaj się jednego i lepiej, żeby to był angielski :]

0

ShookTea jesteś wielki. Dokładnie o to mi chodziło ;)

String tekstZKropko = new String(findElement);
			String wybierzWartosc[] = tekstZKropko.split(",");
			int index2 = 0;
			if(wybierzWartosc[1] != null)
			{
				index2 = Integer.parseInt(wybierzWartosc[1]);
			}
			else
			{
				System.out.println("Przypadek zostanie przerwany");
				System.exit(0);
			}

			Thread.sleep(2000);

			// To locate table.
			WebElement mytable = driver.findElement(By.id(wartoscKomorki));
			// To locate rows of table.
			List<WebElement> rows_table = mytable.findElements(By.tagName("tr"));
			// To calculate no of rows In table.
			int rows_count = rows_table.size();

			// Loop will execute till the last row of table.
			List<String> lista = new ArrayList<String>();
			for (int row = 0; row < rows_count; row++) {
				// To locate columns(cells) of that specific row.
				List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td"));
				// To calculate no of columns(cells) In that specific row.
				int columns_count = Columns_row.size();
				// System.out.println("Number of cells In Row "+row+" are "+columns_count);

				// Loop will execute till the last cell of that specific row.
				
				for (int column = 0; column < columns_count; column++) {
					// To retrieve text from that specific cell.
					String celtext = Columns_row.get(column).getText();
					// System.out.println("Cell Value Of row number "+row+" and column number "+column+" Is "+celtext);
					if (celtext.equals(wybierzWartosc[0])) {
						// System.out.println(column);
						String celtexty = Columns_row.get(column+index2).getText();
						//System.out.println(celtexty);
						lista.add(celtexty);
					}
				}
				
				// System.out.println("--------------------------------------------------");
				
			}
			String[] countries = lista.toArray(new String[lista.size()]);
			return countries;

Wyżej wymieniony fragment kodu wywoływany jest z innej metody. Zastosowałem się do wskazówek ShookTea i działa, choć zajęło to dla mnie troszkę ;)

P.S. - I jestem świadom tego że mieszam języki w nazwach zmiennych i to mój błąd
P.S. - II Na prośbę furious programming - wstawiłem jużkod programu w odpowiednie znaczniki
P.S. - II Na prośbę Promar - wstawiłem szerszy fragment kodu

Problem rozwiązany, można zamknąć lub przekazać do przechowalni potomnym ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1