do while dopisywanie danych do zmiennej

0

Witam mam do napisania program który mam podać nazwę towaru, cenę, podatek i ile sztuk, a następnie ma wyświetli wszystkie te dane i zapytać się czy robimy dalej zakupy jeśli tak to ma te dany dopisać i jak na przykład skończymy zakupy to ma wyświetlić wszystkie towary jakie podaliśmy. Niestety nie umiem sprawić by program wyświetlał taką listę mam w niej tylko ostatni produkt.

import java.util.Scanner;
import javax.swing.JOptionPane;
import java.io.IOException;

public class Lab1 
{
	public static void main(String[] args) 
	{
		String name,n1,s,m; 
		boolean varik=false;
		double a, x, p, v, w; 
		Scanner in = new Scanner(System.in);
		
		do
		{
		name = JOptionPane.showInputDialog(null,"Podaj nazwa produktu: ");
		
		s = JOptionPane.showInputDialog(null,"Podaj wartosc podatku: ");
		p = Double.parseDouble(s);
		
		s = JOptionPane.showInputDialog(null,"Podaj cene NETTO: ");
		a = Integer.parseInt(s);
		
		s = JOptionPane.showInputDialog(null,"Podaj liczbe towaru: ");
		x = Integer.parseInt(s);
		
		w = a*x;
		v = (p/100)*w;
		
		s = "Nazwa towaru "+name+"\b";
		s += "Wartosc Netto "+name+" = "+w+"\n";
		s += "Wartosc podatku "+name+" = " +v+ "\n";
		
		n1 = JOptionPane.showInputDialog(null,"Czy chcesz kontynowac zakupy?(T/N): ");
		
			if (n1.equals("T")|| n1.equals("t"))
			{
				varik = false; 
			}
		
			if (n1.equals("N")|| n1.equals("n"))
			{
				varik = true;
			}
		}
		while(varik != true);
		JOptionPane.showMessageDialog(null,s);
		}
}
0

Za każdą kolejną iteracją pętli do s przypisujesz nową wartość zamiast dodawać do poprzedniej.

0

Dziwne zrobiłem na szybko program w C++ i działa a tutaj nie wiem o co chodzi.

#include <iostream>

using namespace std;

int main()
{
    string name;
    int liczba;
    do
    {
        name += "kowalski ";
        cout << "podaj liczbe :";
        cin >> liczba;
    }
    while(liczba == 0);
        cout << "nazwisko " << name << endl;

    return 0;
}

 
0

To teraz popatrz na to jak wygląda pętla w tym kodzie w cpp a tym w javie.
Tutaj:

s = JOptionPane.showInputDialog(null,"Podaj wartosc podatku: ");
p = Double.parseDouble(s);

nadpisujesz to co jest w s w każdej iteracji pętli. Nie wiem czy przypisywanie tego do tego samego Stringa który zawiera komunikat do wyświetlenia to najlepszy pomysł.
Dodatkowo jeszcze tutaj nadpisujesz to co masz wcześniej:

s = "Nazwa towaru "+name+"\b";

Ogólnie zamiast pisać to w C++ (jeszcze całkiem inaczej) to mogłeś odpalić debugger.

0

już zrobiłem dzięki za odpowiedź:

import java.util.Scanner;
import javax.swing.JOptionPane;
import java.io.IOException;

public class Lab1 
{
	; 
	public static void main(String[] args) 
	{
		String m = " ";
		String name,n1,s; 
		boolean varik=false;
		double a, x, p, v, w; 
		Scanner in = new Scanner(System.in);
		
		do
		{
		name = JOptionPane.showInputDialog(null,"Podaj nazwa produktu: ");
		
		//name = Integer.parseInt(s);
		//System.out.print("Podaj nazwa produktu: ");
		//name = in.next();
		
		s = JOptionPane.showInputDialog(null,"Podaj wartosc podatku: ");
		p = Double.parseDouble(s);
		//System.out.print("Podaj wartosc podatku: ");
		//p = in.nextDouble();
		
		s = JOptionPane.showInputDialog(null,"Podaj cene NETTO: ");
		a = Integer.parseInt(s);
		//System.out.print("Podaj NETTO: ");
		//a = in.nextDouble();
		
		s = JOptionPane.showInputDialog(null,"Podaj liczbe towaru: ");
		x = Integer.parseInt(s);
		//System.out.print("Podaj liczbe towaru: ");
		//x = in.nextDouble();
		
		w = a*x;
		v = (p/100)*w;
		
		m +=  "Nazwa towaru "+name+" ";
		m += "Wartosc Netto " +w+" ";
		m += "Wartosc podatku " +v+ "\n";
		//JOptionPane.showMessageDialog(null,"Wartosc Netto "+name+" = "+w);
		//System.out.println("Wartosc podatku "+name+" = " +v);
		
		n1 = JOptionPane.showInputDialog(null,"Czy chcesz kontynowac zakupy?(T/N): ");
		//JOptionPane.showInputDialog(null, "wartosc n1 to "+n1);
		//JOptionPane.showMessageDialog(null,"Czy chcesz kontynowac zakupy?(T/N): ");
		//n1 = in.next();
		
			if (n1.equals("T")|| n1.equals("t"))
			{
				varik = false; 
			}
		
			if (n1.equals("N")|| n1.equals("n"))
			{
				varik = true;
			}
		}
		
		while(varik != true);
		JOptionPane.showMessageDialog(null,m);
		}
}

I jeszcze mam pytanie jak mogę jakoś ładnie sformatować to okienko by tekst który wyświetlał był czytelniejszy.

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