Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Java "for" loop въорос

Featured Replies

Здравейте искам да попитам някои може ли да ми даде пример как да искарам Pc извън for loopa 

 

		for (L2PcInstance pc : L2World.getInstance().getPlayers())
		{
			if (pc.isOnline() && ((pc.getClient() != null) && !pc.getClient().isDetached()))
			{
				Object[] rowData = new Object[]
				{
					pc.getAccountName(),
					pc.getId(),
					pc.getName(),
					pc.getLevel(),
					pc.getCurrentHp(),
					pc.getCurrentMp(),
					pc.getCurrentCp(),
					pc.getPvpKills(),
					pc.getPkKills(),
					pc.getBaseClass(),
					pc.getCreateDate()
				};
				model.addRow(rowData);
			}
			
		}

Пробвах много неща но грешка и грешка :/ 

Благодаря за времето което ще отделите

какво питаш? и това таблица jtable е? Защото виждам addRow

Редактирано от acnekt (преглед на промените)

преди 14 часа, Iliq Zlatanov написа:

Здравейте искам да попитам някои може ли да ми даде пример как да искарам Pc извън for loopa 

Здравейте !

Въпросът ви поражда поне два нови въпроса, свързани не толкова с това как да се изведе въпросната променлива извън for loop-а, а по-скоро с каква цел искате да го направите.

По начина, по който сте дефинирали цикъла, pc е локална променлива - извън цикъла тя няма как да съществува. Това е свързано със самата имплементация на foreach (запис от вида for(<Т> var : varCollection<T>) {...} , Въпрос по темата - тук и малко от JLS писанията на Oracle - тук). Фактически, foreach (или enhanced for loop, ако трябва да сме точни), има спецификация да изисква типа и името на променливата в самата си структура. Това автоматично означава 2 неща:

 - Не може да бъде разделена декларацията и инициализацията на променливата, използвана във foreach-а.

 - Не е възможно използване на външна за цикъла променлива, декларирана и/или инициализирана преди това в кода Ви. 

Фактически, ако искате да изведете самата декларация на pc да е извън цикъла (подчертавам - декларация, а не инициализация), то тогава трябва да използвате нормалния for или while цикъл:

L2PcInstance pc;
List<L2PcInstance> players = L2World.getInstance().getPlayers(); 
for (int i = 0; i < players.size(); i++) {
	pc = players.get(i);
	if (pc.isOnline() && ((pc.getClient() != null) && !pc.getClient().isDetached()))
	{
		Object[] rowData = new Object[]
		{
			pc.getAccountName(),
			pc.getId(),
			pc.getName(),
			pc.getLevel(),
			pc.getCurrentHp(),
			pc.getCurrentMp(),
			pc.getCurrentCp(),
			pc.getPvpKills(),
			pc.getPkKills(),
			pc.getBaseClass(),
			pc.getCreateDate()
		};
		model.addRow(rowData);
	}
}

Тук вече възниква въпроса "Защо ?" -с каква цел искаме въпросната референция pc да бъде видима извън цикъла ? В текущо приложения код, ако се опитате да използвате ps, извън цикъла, ще получите следното:

Цитат

The local variable pc may not have been initialized

тъй като компилатора не може да знае дали players има поне 1 елемент, който да инициализира pc. Това лесно се оправя, ако инициализирате pc още при декларация с null  (L2PcInstance pc = null;), но остава въпроса поради каква причина ще искаме последния елемент, който цикъла обработи да бъде видим извън тялото му ?

Поздрави !

Редактирано от soundtracker (преглед на промените)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.