Wątek przeniesiony 2015-05-27 10:50 z Java przez bogdans.

Zapis danych z listy do pliku

0

Hej, potrzebuje pomocy.
Mam coś takiego

 
ArrayList<Showing> sprzet = new ArrayList<Showing>();
		sprzet.add(new Showing("DELL ","Windows7 ","AMD ",4,500,15.3,"GA775 " ,4050));
		sprzet.add(new Showing("HP ","Windows8 ","AMD ",4,750,17.7,"GA776 " ,5500));
		sprzet.add(new Showing("VAIO ","Windows7 ","AMD ",8,1000,13.3,"GA771 " ,9000));
		sprzet.add(new Showing("DELL ","Windows8 ","AMD ",4,1000,15.3,"GA772 " ,4050));
		sprzet.add(new Showing("DELL ",null,"AMD ",2,300,15.3,"GA773 " ,2500));
		sprzet.add(new Showing("DELL ","Windows7 ","Intel ",4,500,15.3,"GA774 " ,4000));
		sprzet.add(new Tablets("Apple ",8 ,"GB777 ", 15001,1,12));
		sprzet.add(new Tablets("Microsoft ",6 ,"GB776 ",1300,0.8,10));
		
		
		  try {
              ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("C:\\Users\\plpl\\Desktop\New foldera.txt"));
              out.writeObject(tab);
              out.close();
         }
     catch(IOException ioe)
         {
              System.out.println("Error!");
         }
		
		
		payment = new Scanner (System.in);
		System.out.println("jak chcesz zapłacić?prosze wpisać: karta lub gotówka");
		String method = payment.nextLine();
		if(method.equals("karta"))
		{
			for (int i = 0; i < sprzet.size(); i++)
			{
				sprzet.get(i).card();
			}
		}
		else if(method.equals("gotówka"))
		{
			for (int i = 0; i < sprzet.size(); i++)
			{
				sprzet.get(i).cash();
			}
		}
		else
		{
			System.out.print("podałeś złe parametry. Musisz wpisać : gotówka lub karta");
		}

Chciałbym zapisać to co podaje sprzet.get(i).cash(); do pliku. Może ktoś mnie jakoś nakierować :)?
z góry dzięki za pomoc

1
ArrayList<Showing> sprzet = new ArrayList<Showing>();
sprzet.add(new Showing("DELL", "Windows7", "AMD", 4, 500, 15.3, "GA775", 4050));
sprzet.add(new Showing("HP", "Windows8", "AMD", 4, 750, 17.7, "GA776", 5500));
sprzet.add(new Showing("VAIO", "Windows7", "AMD", 8, 1000, 13.3, "GA771", 9000));
sprzet.add(new Showing("DELL", "Windows8", "AMD", 4, 1000, 15.3, "GA772", 4050));
sprzet.add(new Showing("DELL", null, "AMD", 2, 300, 15.3, "GA773", 2500));
sprzet.add(new Showing("DELL", "Windows7", "Intel", 4, 500, 15.3, "GA774", 4000));
sprzet.add(new Tablets("Apple", 8, "GB777", 15001, 1, 12));
sprzet.add(new Tablets("Microsoft", 6, "GB776", 1300, 0.8, 10));

BufferedWriter writer;
File file = new File("file.txt");
try {
	writer = new BufferedWriter(new FileWriter(file));
	for (int i = 0; i < sprzet.size(); i++) {
		writer.write(sprzet.get(i).cash() + '\n');
	}
	writer.close();
} catch (IOException ex) {
	// TODO: IOException
}
0

Dzięki,działa ale :
w pliku zapisuje się ???????
musiałem zmieć cash z void na int.
Podrzucić cały kod ?
jakieś propozycje ?

0

W celu znalezienia rozwiązania i zaproponowania czegokolwiek, przydałoby się mieć możliwość zerknięcia na metodę cash(), żeby wiedzieć, co ona w ogóle robi. Więc tak, możesz podrzucić kod.

0

załącznik

1

Imho, Twoja metoda cash jest bez sensu. Zmień sygnaturę na public String cash() i to co wypisujesz w metodzie na ekran, zwracaj z metody. Namawiam też do zmiany nazwy metody, na toString.

0

przed zmianami Gjorni cash wyglądała tak - public void cash() musiałem to zmienić na int + dodać return HDD, bo inaczej się nie kompilowało, a innego pomysłu nie miałem
@Gjorni

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;




public class Laptops {
	private static Scanner payment;
	private static Scanner chooseLaptop;

	public static void main (String [] args)
	{
		ArrayList<Showing> sprzet = new ArrayList<Showing>();
		sprzet.add(new Showing("DELL ","Windows7 ","AMD ",4,500,15.3,"GA775 " ,4050));
		sprzet.add(new Showing("HP ","Windows8 ","AMD ",4,750,17.7,"GA776 " ,5500));
		sprzet.add(new Showing("VAIO ","Windows7 ","AMD ",8,1000,13.3,"GA771 " ,9000));
		sprzet.add(new Showing("DELL ","Windows8 ","AMD ",4,1000,15.3,"GA772 " ,4050));
		sprzet.add(new Showing("DELL ",null,"AMD ",2,300,15.3,"GA773 " ,2500));
		sprzet.add(new Showing("DELL ","Windows7 ","Intel ",4,500,15.3,"GA774 " ,4000));
		sprzet.add(new Tablets("Apple ",8 ,"GB777 ", 15001,1,12));
		sprzet.add(new Tablets("Microsoft ",6 ,"GB776 ",1300,0.8,10));
		
		
		payment = new Scanner (System.in);
		System.out.println("jak chcesz zapłacić?prosze wpisać: karta lub gotówka");
		String method = payment.nextLine();
		if(method.equals("karta"))
		{
			BufferedWriter writer;
			File file = new File("C:\\Users\\plpl\\Desktop\\New folder\\a.txt");
			try {
			    writer = new BufferedWriter(new FileWriter(file));
			for (int i = 0; i < sprzet.size(); i++){
			       writer.write(sprzet.get(i).card());
		    }
		    writer.close();
		} catch (IOException ex) {
		   
		}
		}
		else if(method.equals("gotówka"))
		{
			for (int i = 0; i < sprzet.size(); i++)
			{
				sprzet.get(i).cash();
			}
		}
		else
		{
			System.out.print("podałeś złe parametry. Musisz wpisać : gotówka lub karta");
		}
		
		ArrayList<PlaceLaptop> sprzet1 = new ArrayList<PlaceLaptop>();
		sprzet1.add(new PlaceLaptop("GA775 " ,"magazyn Gdynia"));
		sprzet1.add(new PlaceLaptop("GA776 " ,"magazyn Gdynia"));
		sprzet1.add(new PlaceLaptop("GA771 " ,"magazyn Gdańsk"));
		sprzet1.add(new PlaceLaptop("GA772 " ,"magazyn Warszawa"));
		sprzet1.add(new PlaceLaptop("GA773 " ,"brak na stanie"));
		sprzet1.add(new PlaceLaptop("GA774 " ,"brak na stanie"));
		sprzet1.add(new PlaceLaptop("GB777 " , null ));
		sprzet1.add(new PlaceLaptop("GB776 " ,"magazyn Gdynia"));
		
		chooseLaptop = new Scanner (System.in);
		System.out.println("\nProsze podac pozycje: ");
		int numberLaptop = chooseLaptop.nextInt();
		sprzet1.get(numberLaptop-1).place();
		

		
	
		
	}

}

public class Showing {
	protected int numberLaptop;
	protected static int amountsOfLaptops;
	protected String brand;
	protected String OS;
	protected String processor;
	protected int ram;
	protected int HDD;
	protected double display;
	protected String model;
	protected String position;
	protected double price;
	

	Showing(String brand,String OS,String processor,int ram,int HDD,double display,String model,double price)
	{
		this.brand = brand;
		this.OS = OS;
		this.processor = processor;
		this.ram = ram;
		this.HDD = HDD;
		this.display = display;
		this.model = model;
		this.price = price;
		numberLaptop = ++amountsOfLaptops;
	}
	Showing(String brand, double display,String model, double price)
	{
		this.brand = brand;
		this.display = display;
		this.model= model;
		this.price = price;
		numberLaptop = ++amountsOfLaptops;
	}
	
/*
	public void setPrice ( int price)
	{
		this.price = price;
	}
	*/
	public int cash()
	{
		System.out.println(numberLaptop + ". " + (brand == null ? "nieznana marka" : brand  ) + (OS == null ? " Brak systemu operacyjnego " : OS) + (processor == null ? " nieznany procesor" : processor) + 
				(ram == 0 ? " brak danych o ilości pamięci ram" : ram + "GB ") + (HDD == 0 ? " brak danych o pojemności dysku twardego" : HDD + "GB ") + (display == 0 ? " brak danych o wielkości matrycy" : display + "cali ") + 
				(model == null ? " nieznany model" : model) + (price == 0 ? "nieznan cena" : price+"$"));
		return HDD;
		
	}
	public int card()
	{
		System.out.println(numberLaptop + ". " + (brand == null ? "nieznana marka" : brand  ) + (OS == null ? " Brak systemu operacyjnego " : OS) + (processor == null ? " nieznany procesor" : processor) + 
				(ram == 0 ? " brak danych o ilości pamięci ram" : ram + "GB ") + (HDD == 0 ? " brak danych o pojemności dysku twardego" : HDD + "GB ") + (display == 0 ? " brak danych o wielkości matrycy" : display + "cali ") + 
				(model == null ? " nieznany model" : model) + (price == 0 ? "nieznan cena" : (price * 0.02 + price+"$")));
		return HDD;
		
	}

}
1

Omg, przecież napisałem co masz zrobić.

    public String cash()
    {
        return numberLaptop + ". " + (brand == null ? "nieznana marka" : brand  ) + (OS == null ? " Brak systemu operacyjnego " : OS) + (processor == null ? " nieznany procesor" : processor) + 
                (ram == 0 ? " brak danych o ilości pamięci ram" : ram + "GB ") + (HDD == 0 ? " brak danych o pojemności dysku twardego" : HDD + "GB ") + (display == 0 ? " brak danych o wielkości matrycy" : display + "cali ") + 
                (model == null ? " nieznany model" : model) + (price == 0 ? "nieznan cena" : price+"$");

    }
0

Działa, dzięki

0

Korzystając z tematu.
Chciałbym za pomocą np scannera wybrać sobie moduły zawarte w arraylist. Załóżmy AMD +windows 7, następnie żeby wyświetliło z arraya tylko te punkty, które zawierają to co podałem w skanerze. Z góry dzięki z pomoc

0

W ArrayList przechowujesz obiekty "Showing". Jeżeli dobrze rozumiem, to najszybciej będzie używać akcesorów(getterów) z tej klasy i porównywać z tym co zwróci Scanner. Generalnie kaskada ifów i masa brzydkiego kodu ale przy tak zaprojektowanym programie to cudów nie będzie.

0

Szkoda, to może nie będę się w to zagłębiał , ale z drugiej strony trzeba od czegoś zaczynać. Dzięki :)

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