Перейти к содержимому

Фото
- - - - -

Ява


  • Вы не можете создать новую тему
  • Please log in to reply
56 ответов в этой теме

#31 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 07 октября 2006 - 17:09

эдит: а все, сделал...
А как проверить при чтении из фаила содержит ли фаил 4 столбца? там йункция чтения на предыдущей странице была..акей писал.
Еще вопрос: а как можно добавлять в массив только неодинаковые элементы? <_<

Сообщение изменено: OzzY (07 октября 2006 - 18:32 )

  • 0

#32 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 08 октября 2006 - 22:01

люди, хэлп. Ответьте мне на вопросы, плз. У меня есть список next_id=[1,2,1,1,2,1] Я хочу, чтобы там все элементы были разные, тоесть [1,2], делаю так:
for(i=0;i<next_id.size();i++) {
	  for(j=0;j<next_id.size();j++) {
		  if(!(next_id.get(i).equals(next_id.get(j)))) {
			  next_id.add(next_id.get(j));
		  }
	  }
   }
но получаю вот такую надпись:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space!
  • 0

#33 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 08 октября 2006 - 23:22

но получаю вот такую надпись:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space!

:) а ты смотри сам. Пихаешь в тот же список по которому цикл организован.
Ну цикл кончаться и не спешит :)


Почитай документацию по Яве. Намекну слегка, что есть такие коллекции, которые позволяют иметь в себе только уникальные элементы

Сообщение изменено: Fors (08 октября 2006 - 23:24 )

  • 0

#34 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 09 октября 2006 - 09:57

А как проверить при чтении из фаила содержит ли фаил 4 столбца? там йункция чтения на предыдущей странице была..акей писал.


ну так делаешь токенайзером или сплитом лист или массив, и проверяешь его длину. У массива есть поле length, у листа метод size()

А у коллекций есть метод contains() который проверяет есть ли такой же елемент в ней

Сообщение изменено: Акей (09 октября 2006 - 09:57 )

  • 0

#35 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 09 октября 2006 - 17:33

:angry: дааааа.*****, что я делаю не так?!
ArrayList uri_id=new ArrayList(); //v etom spiske hranjatsja pervona4aljnqe indeksq poiska
ArrayList next_id=new ArrayList();//zdesj soderzitsja spisok row_id. pri4em kazdqi row sootvetstvuet id
4eleveka
ArrayList row_id=new ArrayList(); //spisok indeksov po kotoromu isem imusestvo 4eloveka
for(int i = 0; i < dataBase.size(); i++) {
	  ArrayList row = (ArrayList)dataBase.get(i);
	  if((row.get(1)).equals("nimi")) {
		  uri_id.add(row.get(0));   //zapolnjaem pervona4aljnqi spisok indeksov..sei4as tam ese estj nepraveljnqi indeksq	  }
  }
  System.out.println(uri_id);
  for(int i = 0; i < dataBase.size(); i++) {
	  ArrayList row = (ArrayList)dataBase.get(i);
	  for(j=0;j<row_id.size();j++) {
		   if(row.get(0).equals(uri_id.get(j))&&row.get(1).equals("omab")) {
		  row_id.add(row.get(2));   //otbiraem iz pervogo spiska indeksov nenuznqe indeksq
			}
	  }
	next_id.add(row_id);//sozdaem dvumernqi spisok
  }
При таком коде у меня не заполняется ни список row_id ни next_id!!!(? Почему? что не так? Это самое начало функции там больше ничего до этого нет...может дела в проверке uri_id?? А? :angry:
  • 0

#36 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 09 октября 2006 - 19:49

Ozzy, да ты просто генератор кода случайного :)

Сообщение изменено: Fors (09 октября 2006 - 19:50 )

  • 0

#37 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 09 октября 2006 - 20:27

хех, ответ, конечно, хороший), но не по теме! Серьезно, хэлп!
  • 0

#38 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 09 октября 2006 - 20:40

хех, ответ, конечно, хороший), но не по теме! Серьезно, хэлп!

Дело в том, что слишком часто хелп просишь :) Посиди, подумай...
  • 0

#39 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 09 октября 2006 - 20:56

так я спрашиваю, а сам сижу думаю, пробую, меняю, а результат всегда одно и тоже...из списка uri_id= [1,2,1,2,1,1,2] получается куча пустых списков и все. А другим способом мне нельзя, мне надо потом будет знать номер строки двумерного списка.
  • 0

#40 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 09 октября 2006 - 21:34

OzzY, не зная задания, сложно понять, но первое что попадается на глаза - ты не кастишь обэкт к строке перед теме как сделать equals()

не row.get(1).equals("omab"), а ((String)row.get(1)).equals("omab")
  • 0

#41 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 09 октября 2006 - 23:38

OzzY, не зная задания,

задания нет, он просто код пишет :)
  • 0

#42 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 10 октября 2006 - 09:55

Fors, да ладно тебе:) На самом деле я знаю где задание ( http://www.lambda.ee..._mikroandmebaas ) но мне влом его читать :P
  • 0

#43 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 10 октября 2006 - 10:40

Да ладно вам, причем здесь задание...я просто хочу сделать двумерный список, как был при чтении из фаила, вот я и делаю наподобие такого.
Акей, ну в другой функции есть точно такая же проверка, там все ок, и вообще до того, как я пытался сделать именно двухмерный список все было ок, все заполнялось. А сейчас почему-то нет.
А эта функция к заданию такому:
из фаила нужно найти самого богатого чела (фаил я вроде выкладывал). Тоесть сравнить все их имущество.
Тут не указывается их ид, запрос в командной строке идет вида java DataBase kesomabmax file_name.csv, поэтому я должен сам найти эти ид и потом по ид посчитать сумму вещей и выдать ид того, кто самый богатый. Но это не важно...почему не заполняется массив?! фук...
  • 0

#44 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 10 октября 2006 - 19:26

Fors, да ладно тебе На самом деле я знаю где задание ( http://www.lambda.ee..._mikroandmebaas ) но мне влом его читать

А мне код лень читать :) и вообще: Ози, надо было на олимпиаду двигать сегодня :)
  • 0

#45 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 11 октября 2006 - 17:23

ХА! я все-таки сделал это! :P
  • 0

#46 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 13 октября 2006 - 16:35

Вопрос: почему
itemvalue=Integer.parseInt((String)(row.get(2)));
работает ок (здесь из списочного типа делается строка, а потом целое), а
result[i]=file_value[i] + Integer.parseInt((String)(id_fullsum.get(i)));

дает ошибку java.lang.ClassException: java.lang.Integer?

и почему
for(j=0;j<next_id.size();j++) {
	 if(next_id.contains(null)) {
	 next_id.remove(j);
	 }
}
не работает?

Сообщение изменено: OzzY (13 октября 2006 - 16:41 )

  • 0

#47 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 13 октября 2006 - 19:46

result[i]=file_value[i] + Integer.parseInt((String)(id_fullsum.get(i);

это не работает, т.к. парсИнт возвращает объект типа Интегер, а не простой тип инт.

for(j=0;j<next_id.size();j++) {     if(next_id.contains(null)) {     next_id.remove(j);     }}

а это может не работать на коллекциях, которые не допускают пустые значения.
  • 0

#48 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 13 октября 2006 - 21:56

result[i]=file_value[i] + (int)Integer.parseInt((String)(id_fullsum.get(i);

так тоже не работает, а как тогда?
  • 0

#49 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 13 октября 2006 - 23:03

. парсИнт возвращает объект типа Интегер

прости меня грешного, солгал я тебе в пятницу вечером :) парсИнт выдает примитивный инт, а не объект.
С чем ты его сложить пытаешься?
  • 0

#50 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 14 октября 2006 - 13:46

в обоих примерах с интом и складываю, в том и дело, что ы первом просто переменной значение присваиваю, а потом ее прибавляю, а во втором сразу к некоторому элементу массива прибавляю..может тоже сначала к какой-нить переменной присвоить?
  • 0

#51 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 14 октября 2006 - 22:03

в обоих примерах с интом и складываю, в том и дело, что ы первом просто переменной значение присваиваю, а потом ее прибавляю, а во втором сразу к некоторому элементу массива прибавляю..может тоже сначала к какой-нить переменной присвоить?

а может дану его нафиг? Сегодня суббота, расслабься
  • 0

#52 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 16 октября 2006 - 09:38

OzzY, мы не экстрасенсы, без более-менее полсного кода помочь не можем
  • 0

#53 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 16 октября 2006 - 21:57

мы не экстрасенсы

а вдруг? :)
  • 0

#54 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 16 октября 2006 - 22:32

for(j=0;j<next_id.size();j++) {
ArrayList row_id = (ArrayList)next_id.get(j);
   for(i=0;i<row_id.size();i++) {
	 for(int k = 0; k < dataBase.size(); k++) {
		ArrayList row = (ArrayList)dataBase.get(k);
		if(row.get(0).equals(row_id.get(i))&&row.get(1).equals("hind")&&
		row.get(3).equals("integer")) {
		itemvalue=Integer.parseInt((String)(row.get(2)));
		System.out.println("Item value of person, who has id="+(j+1)+"   is: "+itemvalue);
		fullsum=fullsum+itemvalue;
	   }
		}
	  }



в данном случае пробегает все ок...

				int[] file_value=new int[id_fullsum.size()]; 
				int[] result=new int[id_fullsum.size()];	 
				int[] total=new int[id_fullsum.size()];	  
	for(i=0;i<id_fullsum.size();i++) {  
	  ArrayList row_id = (ArrayList)next_id.get(i);
 	split=split(row_id); //vqzov funktsii razbitija na slova
 	System.out.println("split: "+split);
 	file_value[i]=file_search(split,flag,omadus,vaartus); //poisk zna4enija v drugom faile, imja kotorogo polu4ili iz funktsii split
 	total[i]=Integer.parseInt((String)(id_fullsum.get(i)));
	  result[i]=file_value[i] + total[i];
 	System.out.println("Result is: "+result);
 	}
в данном нет!

Сообщение изменено: OzzY (16 октября 2006 - 22:35 )

  • 0

#55 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 17 октября 2006 - 22:29

С тем разобрался..теперь немного из другой оперы:

Совсем из головы вышибло, если я сортирую любой массив, и хочу приэтом знать начальный индекс элементов. Тоесть, к примеру, у меня есть массив [1, 3, 10, 4, 5], у десятки индекс 3, я отсортирую массив в порядке возрастания (десятка станет последней), как мне при это в цикле сортировки прослеживать индекс этой десятки?
  • 0

#56 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 19 октября 2006 - 12:15

OzzY, как вариант, оставить старый несортитованный массив, и потом искать конкретное число в нем. Если числа все уникальные.
  • 0

#57 OzzY

OzzY

    Великий и Ужасный

  • Пользователь
  • 461 сообщений

Отправлено 21 октября 2006 - 14:09

форум тормозил, не мог ответить...все сделал, спасибо, следующая лаба по ГУИ:)
  • 0