Tretas e Cenas

Tretas e Cenas


Onde escrevo as minhas tretas. Tão depressa estou a escrever sobre algo poético como a seguir escrevo só para não me esquecer.

Janeiro 2011
S T Q Q S S D
« Dez   Fev »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Categorias


“Vending Machine” – 2 de ∞

Pedro FonsecaPedro Fonseca

Para que a máquina esteja a funcionar, primeiro tem de existir uma grelha de produtos dispostos por linhas e colunas. Os produtos têm então que estar em matiz para que se consiga a qualquer altura chamar certa posição e receber o respectivo valor que se pretende.

A matriz que eu criei chama-se produto e é uma variável global, porque pretendo que seja acedida em todo o projecto. Iniciei a variável da seguinte forma:


static String[][][] produtos = new String[5][4][3];


Isto é do tipo estático String com três dimensões e que a primeira dimensão corresponde às linhas, a segunda às colunas e a terceira dimensão corresponde ao Nome do Produto, Stock e Preço respectivamente.A outra parte fundamental do processo é a organização do ficheiro PRODUTOS.TXT, este tem de estar de acordo. Escrevi o meu assim:


Amendoins_1_1.30;Bolachas_3_0.50;Pastilhas_5_1;Gomas_1_2
Kit-Kat_5_2;Mars_6_5;Crunch_5_0.80;Mini-Chocolate_5_0.70
Pepsi_1_1.50;Coca-Cola_10_2;Sumol_8_2;Cerveja_5_5
Agua_10_2;Guaraná_1_1.30;Batatas_3_5;Ice Tea_5_2
Tabaco_5_2;Revista_4_1.30;Bronzeador_5_5;Chá_3_2


Usei o ; para separar cada produto e o _ para separar as componentes de cada produto. Estão organizados por quatro produtos por linha e contem cinco linhas. Isto quer dizer que vai encaixar na perfeição no array produtos.

Agora um exemplo de como chamar um valor de uma certa linha e coluna. Digamos que eu quero o nome, stock e preço do produto na posição b3, teria de fazer somente isto:


String nome= produtos[2][1][0];
String stock= produtos[2][1][1];
String preco= produtos[2][1][2];


Um array tem sempre o zero como index inicial, por isso o produtos[2] corresponde à terceira linha e o produtos[2][1] à segunda coluna (b). Depois é percorrer as posições que a terceira dimensão contem para recolhermos os valores pretendidos.

Mas só isto não coloca o valores que temos no ficheiro PRODUTOS.TXT no meu array no arranque da máquina. Aqui entra a função uma função genérica que irá ler o ficheiro, linha a linha, partir no ; e no _ e colocar os respectivos valores nas posições correctas.

Como é que isto se faz? Simples, aqui vai.


private static void Produtos_Iniciar() {
		int linha = 0, coluna = 0, i;
		String[] cpos;
		File ficheiro = new File("PRODUTOS.TXT");
		try {
			Scanner scanner = new Scanner(ficheiro);
			while (scanner.hasNextLine()) {
				String clinha = scanner.nextLine();
				Scanner lineScanner = new Scanner(clinha);
				lineScanner.useDelimiter(";");
				linha = 0;
				while (lineScanner.hasNext()) {
					String part = lineScanner.next();
					cpos = part.split("_");
					if (cpos.length > 1) {
						for (i = 0; i <= 2; i++) {
							if (cpos[i] != "") {
								produtos[coluna][linha][i] = cpos[i];
							}
						}
					}
					linha++;
				}
				coluna++;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}


Analiso cada linha, faço o respectivo Split da linha nos ; e depois pego no array que tem os valores do split e volto a partir nos _ e depois como sei que só vou ter três campos faço um FOR para correr as três posições.

No fim desta função o array produtos fica preenchido correctamente e pronto a ser usado.

Espero que seja util no projecto.

Enjoy (:)-)

Sou licenciado em Sistemas de informação na Universidade Lusófona, gosto de tecnologia, programação, desportos radicais, bicicletas e motas. Adoro o Sistema Android e começo a gostar de Linux. E ainda tenho a mania que sei cozinhar.

Comentários 0
Ainda não existem comentários