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

Фото
- - - - -

Ява мать её


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

#1 Antiseptic

Antiseptic

    психо-зверёк

  • Постоялец
  • 1 529 сообщений
  • Откуда:Cтарый район.

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

вот кароче вспомнил тут недавно что Яву то я тож задекларировал =) и узнал ещё что надо минимум три домашки... вот и ипуся щас. трабл такой ... есть 2 файла.. csv в одном линк на другой в таком виде 1,omab,autod.csv#2,uri ... ну линк то работает ... но во втором файле открывает инфу только о id1
а id2 пропускает ...
вот код
-----------------------------------------
import java.io.*;
import java.util.*;

class myrdf {
	public static void main(String [] args) throws Exception {
		if(args.length != 1) {
			System.out.println("Sorry! You must enter your arguments!");
			System.exit(1);
		}
			String [] _args = args[0].split(" ");
			String command = "";
			String filename = "";
			String id = "";
			String properties = "";
			String vaartsus = "";
				try {
					if(_args[0].equals("omabsumma") && (_args.length == 4 || _args.length == 6)) {
						command = _args[0].trim();
						filename = _args[1].trim(); 
							if(!_args[2].trim().equals("where")) 
							throw new Exception("Unknown command" + _args[2]);
								try {
									StringTokenizer TempId = new StringTokenizer(_args[3].trim(), "=");
										if(!TempId.nextToken().equals("id"))
										throw new Exception("Unknown command");
									id = TempId.nextToken();
								}
							catch (NoSuchElementException e) {
								throw new Exception("Unknown command " + _args[3]);
							}
							if(_args.length == 6){
								if(!_args[4].trim().equals("and")) 
								throw new Exception("Unknown command " + _args[4]);
									try {	StringTokenizer TempProp = new StringTokenizer(_args[5].trim(), "=");
											properties = TempProp.nextToken();
											vaartsus = TempProp.nextToken();
									}
								catch (NoSuchElementException e) {
									throw new Exception("Unknown command " + _args[5]);	
								}
							}
						System.out.println(rdf_omabsumma(filename, id, properties, vaartsus));	 
					}
					else if(_args[0].equals("kesomabmax") && (_args.length == 2 || _args.length == 4)) {
						command = _args[0].trim();
						filename = _args[1].trim(); 
							if(_args.length == 4){
								if(!_args[2].trim().equals("where"))
									 throw new Exception("Unknown command " + _args[2]);
										try {
											StringTokenizer TempProp = new StringTokenizer(_args[3].trim(), "=");
												properties = TempProp.nextToken();
												vaartsus = TempProp.nextToken();
										}
											catch (NoSuchElementException e) {
												throw new Exception("Unknown command " + _args[3]);
											}			
							}
						System.out.println(rdf_kesomabmax(filename, properties, vaartsus));
					}
					else {
						throw new Exception("Valed argumendid!");  
					}
				}
					catch(Exception e) {
						System.out.println("Viga! " + e);
						System.exit(1);
					}
}						
public static String rdf_omabsumma(String filename, String id, String properties, String vaartsus) {	
	String DAB [][]; // database
	String ID = id;   
	Integer vaartus = new Integer(0);	
		if((DAB = ArrayGen(filename)) == null) 
		System.exit(1); 
			for(int i = 0; i < DAB.length; i++) {	   
				if(DAB[i][0].equals(ID) && DAB[i][1].equals("omab") && DAB[i][3].equals("uri")) {			  
					try {
						vaartus.decode(DAB[i][2]);
						ID = DAB[i][2];
					} 
					catch (NumberFormatException e) {		 
						String [] Temp = DAB[i][2].split("#");		
							if(Temp.length != 2) {
								System.out.println("Viga failis " + filename);
								return null;	
							}		 
						vaartus += vaartus.decode(rdf_omabsumma(Temp[0], Temp[1], properties, vaartsus));
					}
				} 
		if(properties.equals("") && vaartsus.equals("")) { 
			if(ID != id) { 
				for(int j = 0; j < DAB.length; j++)
				if(DAB[j][0].equals(ID) && DAB[j][1].equals("hind") && DAB[j][3].equals("integer"))
				vaartus += vaartus.decode(DAB[j][2]); 
			ID = id;	 
			}
			else {
				if(DAB[i][0].equals(ID) && DAB[i][1].equals("hind") && DAB[i][3].equals("integer"))
				vaartus += vaartus.decode(DAB[i][2]); 
			}	 
		}						
		if(!properties.equals("") && !vaartsus.equals("")) { 
			if(ID != id) { 
				for(int l = 0; l < DAB.length; l++)
					if(DAB[l][0].equals(ID) && DAB[l][1].equals(properties) && DAB[l][2].equals(vaartsus))
						for(int k = l+1; k < DAB.length; k++)
							if(DAB[k][0].equals(ID) && DAB[k][1].equals("hind") && DAB[k][3].equals("integer")) {
								vaartus += vaartus.decode(DAB[k][2]); 
								break;
							}  
						ID = id;
			}
			else {
				if(DAB[i][0].equals(ID) && DAB[i][1].equals(properties) && DAB[i][2].equals(vaartsus))
					for(int k = i+1; k < DAB.length; k++)
						if(DAB[k][0].equals(ID) && DAB[k][1].equals("hind") && DAB[k][3].equals("integer")) {
							vaartus += vaartus.decode(DAB[k][2]); //String -> Integer 
							break;
						}			  
			}	
		}	   
			} // for
			return vaartus.toString();
}				  
public static String rdf_kesomabmax(String filename, String properties, String vaartsus) {	
	String DAB [][]; // database
	String ID = "";
	String AllID = ""; 
	String GotID = ""; 
	String EndID = ""; 
	String Temp = "";
	Integer vaartus = new Integer(0);
	Integer vaartus2 = new Integer(0);
		if((DAB = ArrayGen(filename)) == null) 
		System.exit(1); 
			for(int i = 0; i < DAB.length; i++){
				AllID = AllID + DAB[i][0] + " ";
				if(DAB[i][1].equals("omab"))
					GotID = GotID + DAB[i][2] + " ";
			}
			String [] IDArray = AllID.split(" ");
			String [] GotArray = GotID.split(" ");
			
			Bubble_Sort(IDArray);
			
			for(int i = 0; i < IDArray.length; i++) {
				if(!Temp.equals(IDArray[i]))
				EndID = EndID + IDArray[i] + " "; 
				Temp = IDArray[i];	 
			}
			
			String [] EndArray = EndID.split(" ");
			EndID= "";
			
			for(int i = 0, y = 0; i < EndArray.length; i++) {
				for(int j = 0; j < GotArray.length; j++) {
					if(EndArray[i].equals(GotArray[j]))
					y = 1;
				}
				if(y != 1)
				EndID = EndID + EndArray[i] + " ";
				y = 0;  
			}	  
			
			String [] TheEnd = EndID.split(" ");
				
			for(int i = 0; i < TheEnd.length; i++) {
				vaartus2 = vaartus.decode(rdf_omabsumma(filename, TheEnd[i], properties, vaartsus));
					if(vaartus < vaartus2)
					ID = TheEnd[i];	  
				vaartus= vaartus2; 
				}
			if(ID.equals(""))
			ID = null;	   
			return ID;
}
 public static String[][] ArrayGen(String filename)  {
	int TdAll = 0; 
	int TdCalc = 0; 
	int ElemCalc = 0;  
	String TdNow; 
	String AB [][] = {}; 
	String [] Temp = {};
	
		try {
			FileInputStream File = new FileInputStream(filename); 
			BufferedReader br_reader = new BufferedReader(new InputStreamReader(File));
	
			TdNow = br_reader.readLine();
			
			while (TdNow != null) {
				if(TdNow.trim().length() != 0)
				TdAll++;					  
				TdNow = br_reader.readLine();	  
			}
			
			AB = new String[TdAll][4]; 
			File.getChannel().position(0);
			
			TdNow = br_reader.readLine();
			TdCalc = 0;
			while (TdNow != null) {
				if(TdNow.trim().length() != 0) {				
					Temp = TdNow.split(",");		
					if(Temp.length != 4) {
						System.out.println("Viga failis " + filename);
						return null;	
					}		  
					for(int i = 0; i < 4; i++)
						AB[TdCalc][i] = Temp[i];  
					TdCalc++; 
				}	   
				TdNow = br_reader.readLine();
			} 
			br_reader.close();
			File.close(); 
		}
		catch (IOException e) {
			System.out.println(e);
			return null;
		}   
	return AB;
}
public static void Bubble_Sort(String b[]) {	
	Integer vaartus = new Integer(0);	
	String Temp = "";
	for(int j = 0; j < b.length-1; j++) 
		for(int i = 0; i < b.length-j-1; i++) 
			if((vaartus = vaartus.decode(b[i])) > (vaartus = vaartus.decode(b[i+1]) {
				Temp = b[i];
				b[i] = b[i+1];
				b[i+1] = Temp;
		 }   
  }
}  


---------------------------
вот файл 1
1,omab,7,uri
2,omab,8,uri
7,tyyp,maja,string
7,hind,5,integer
8,tyyp,maja,string
8,hind,44,integer
1,omab,autod.csv#2,uri
2,omab,autod.csv#1,uri
----------------------------
вот второй
1,tyyp,auto,string
2,tyyp,auto,string
1,mark,opel,string
2,mark,cadillac,string
1,hind,1,integer
2,hind,545,integer


в чём косяк? =) объясните..

Сообщение изменено: Antiseptic (18 декабря 2006 - 20:43 )

  • 0
Дыши, ровно. Представь корабли, море, спокойные волны.. горизонт полосой, взгляд на закат, если ты хочешь, всё будет именно так.

#2 Antiseptic

Antiseptic

    психо-зверёк

  • Постоялец
  • 1 529 сообщений
  • Откуда:Cтарый район.

Отправлено 18 декабря 2006 - 17:35

хелп самбади..
  • 0
Дыши, ровно. Представь корабли, море, спокойные волны.. горизонт полосой, взгляд на закат, если ты хочешь, всё будет именно так.

#3 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 18 декабря 2006 - 20:30

Значит неверная логика где-то, это ж пипец проверять логику :(
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#4 Antiseptic

Antiseptic

    психо-зверёк

  • Постоялец
  • 1 529 сообщений
  • Откуда:Cтарый район.

Отправлено 18 декабря 2006 - 20:38

ну странно что он ид под номером 1 видет в дополнительном файле а ид н 2 нет
  • 0
Дыши, ровно. Представь корабли, море, спокойные волны.. горизонт полосой, взгляд на закат, если ты хочешь, всё будет именно так.

#5 БугаГа

БугаГа
  • Пользователь
  • 260 сообщений
  • Откуда:-за

Отправлено 18 декабря 2006 - 20:41

Antiseptic, всем влом рытся в таком коде ;)
Отредактируй сообщение с тэгами , а то глаза сломать можно :angry:
  • 0
First they ingore you. Then they laugh at you. Then they fight you. Then you win. © Mahatma Ghandi

#6 Antiseptic

Antiseptic

    психо-зверёк

  • Постоялец
  • 1 529 сообщений
  • Откуда:Cтарый район.

Отправлено 18 декабря 2006 - 20:44

вот отредактил
  • 0
Дыши, ровно. Представь корабли, море, спокойные волны.. горизонт полосой, взгляд на закат, если ты хочешь, всё будет именно так.

#7 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 18 декабря 2006 - 20:45

Очевидно он у тебя продолжает выбирать
1,omab,autod.csv#2,uri

по заданной тут единице...
Или где-то там для простоты статически было задано, хз :) не смотрел, честно
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#8 Antiseptic

Antiseptic

    психо-зверёк

  • Постоялец
  • 1 529 сообщений
  • Откуда:Cтарый район.

Отправлено 18 декабря 2006 - 20:48

нет... еслиб выбирал по единице то результаты например о цене машин со 2ым ид были одинаковыми а так он просто ноль выдаёт
  • 0
Дыши, ровно. Представь корабли, море, спокойные волны.. горизонт полосой, взгляд на закат, если ты хочешь, всё будет именно так.

#9 Fors

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

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

кто же ТАК код пишет? тут моСК сломают прежде, чем баг найдут

Как вариант - используй дебаггер и там все видно будет
  • 0