Anonymní profil bezmena – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil bezmena – Programujte.comAnonymní profil bezmena – Programujte.com

 

Příspěvky odeslané z IP adresy 158.195.204.–

Java › Vysvětlení zobrazení grafiky
23. 8. 2013   #180744

BufferStrategy sa stara o buffery (resp. double-buffering a page-flipping) do ktorych sa da kreslit a potom to spetne mozes zobrazit na obrazovku. Ide o to aby pri prekreslovani obrazku nevznikali artefakty na obrazovke. Cize vypytas si BufferedStrategy ak je null vytvoris novy a prerusis metodu. Z bs si vypitas objekt Graphics a do neho renderujes ten potom uvolnis a nakoniec to zobrazis na obrazovke.

http://docs.oracle.com/javase/tutorial/extra/fullscreen/bufferstrategy.html

http://www.realapplets.com/tutorial/doublebuffering.html

http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html

Matematika › Výpočet normály
22. 8. 2013   #180696

O tejto metode som pred tym nepocul, cize sa neviem vyjadrit, ale ak najdes nejake odvodenie tejto metody rad by som si ho precital. Mozno, podla tvojho popisu, navracia len normalovy vektor, to neviem. Ale ak potrebujes len bod ktory, ked spojis so stredom mnohouholniku tak priamka kotra nimi prechadza bude kolma na mnohouholnik. Tak rovnica vyssie ti dava celu taku mnozinu bodov kolmich na dany mnohouholnik, menovite: x = S + tN, cize ak potrebujes jeden taky bod tak ti staci len t=1: x=S+N. S zrejme vypocitas ako aritmeticky priemer, neveim ako je definovany stred mnohouholniku v opengl, ale ked si tak v hlave prebieham ako sa zistovali stredy tak aritmeticky priemer by mal fungovat. Ak nevies ako presne funguje Newellsowa metoda tak pouzi vektorovy sucin, podla mna to nieje o vela zlozitejsie. Zober si ze mas body v rovine tvoraice mnohouholnik (u0,u1,u2,....,un). Su to v podstate vektory od bodu (0,0,0) a tym ze su vsetky v jednej rovine tak vektorovy sucin lubovolnych dvoch ti da nenormovany ortogonalny vektor (to vyplyva z definicie vekt. sucinu): N = ui x uj.

Matematika › Výpočet normály
22. 8. 2013   #180666

je viac sposobou ako to vypocitat. Ale kedze sa nezaoberas normalou na  rozmerny podpriestor, tak ti staci standardny vektorovy sucin. Vyberes si dva nezavysle vektory daneho mnohouholnika a vektorovo ich vynasobis z toho dostanes treti vektor ktory je nutne kolmy na dane dva vektory. Ked uz mas normalovy vektor a stred, parametricku rovnicu priamky urobis jednoducho: x=S + tN, kde S je vektor polohy stredu, N je normalovy vektor a t je parameter.

Druha moznost ako zyskat normalovy vektor je ze si uvedomis, ze potrebujes ziskat kolmy vektor na dva nezavysle (u1,u2) vektory ktorymi je urceny podpriestor (ako v prvom pripade) a generujes dany vektor v nejakej baze (v tvojom pripade kanonickej w1=(1;0;0), w2=(0;1;0), w3=(0;0;1)) a cize: N = aw1 + bw2 + w3, kde a, b su koeficienty ktore dopocitas. Teraz pouzijes skalarny sucin (bilinearna, kladne definitna operacia), kolmy je vektor prave vtedy ked skalarny sucin dava 0:

1.) <N,u1>=0 a <N,u2>=0

2.) Vyuzijes bilinearitu:

a<w1,u1> + b<w2,u1>+<w3,u1>=0
a<w1,u2> + b<w2,u2>+<w3,u2>=0
mas dve rovnice o dvoch neznamych, ktore dosadis do rovnice pre N a mas normalovy vektor. Btw. <,> znacim skalarny sucin.

Java › JTextField.getText() hodnota
12. 8. 2013   #180273

Napis prosimta cely kod. Inak predpokladam ze ked nieco napises, tak nevolas okamzite KeyListener, alebo nieco podobne. Uvedom si ze ked sa vytvori TextField tak sa v nom nachadza len prazdny retazec (mozno null to uz neviem) a to je zhruba vtedy ked bezi aj tvoj kod. Iny dovod aby ti to nefungovalo to nema. Cize musis najskor napisat Listener ktory po urcitej akcii vola tvoj kod, napr. po napisani znaku, prip. stlaceni tlacitka. Cize podme to urobit tak ze volas svoj kod za kazdym ked nieco napises.

final JTextField textField = ....

KeyLitener kl = new KeyLitener(){
	public void keyTyped(KeyEvent e){
		
		if(textField.getText().equals("1")){
			doSomethig();
		}

// pripadne ak chces iba jednotku zachytit tak sa pytaj na key// Code z KeyEventu metodou getKeyCode() to ti vrati cele cislo
// alebo getKeyChar() ti vrati Znak (char)
	}

	.... // dalsie metody keyLiteneru
};

textField.addKeyListener(kl);

Dokumentacia ku KeyListeneru: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyListener.html

a ku KeyEventu: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html.

Java › java kniha o GUI
2. 8. 2013   #179826

#10 goddard
Hmm do buducna, ale to uvazujes tak dobrich par rokov dopredu. S FX som mal tu cest a mozem ti povedat, ze este dost veci nefunguje tak ako by malo. A navyse vela veci co sa pisali pred tym v swingu jednoducho, teraz vyzeraju hrozivo a tak isto mi pride ze namas nad niektorimi prvkami taku kontrolu ako vo swingu (teraz navravim o beznych veciach, ale skor animacie, AfTransformacie,....), zato tvorbu zakladneho gui vyriesili velmi pekne aj tym, ze sa da napisat pomocou fxml a style-ovat cez css.

Java › java kniha o GUI
31. 7. 2013   #179756

Kniha je vynikajuci pomocnik, ale taktiez by som ti poradil na zaciatok precitat si sunacke (po novom oracleovske) tutoriali. Ak chces vediet viac o danom objekte citaj api dokumentacie tam najdes popis celeho classu a kazdej metody v nom.

Java › Přidání Stringu do pole
4. 7. 2013   #178792

   

// Napr. globalne list s hracmi
ArrayList<Stirng> players = new ArrayList<String>(8);

// metoda
JButton button = new JButton("Add Player");

button.addActionListener(new ActionListener(){
	
	public void actionPerformed(ActionEvent e){
		JDialog dialog = createAddDialog();
		dialog.setVisible(true);
	}
});

public JDialog createAddDialog(){
	JDialog dialog = new JDialog(this, "Add Player");
	final JTextField nameField = new JTextField(30);
	JButton addPlayer = new JButton();

	// layout pojde sem
	
	addPlayer.addActionLister(new ActionListener(){
		String name = nameField.getText();
		// kontrola ci meno vyhovie
		
		//	if(!vyhovujuce)
				// generuje warning/error....
		players.add(name);
	});
	return dialog;
}
Java › Substring - hladanie znaku a…
4. 7. 2013   #178791

Tak mas moznost  precitat nejaky specificky symbol, ktorym zacina tvoj substring, alebo regularne vyrazy. Takze chces iba cislo teda z line: key: 12427545-41564-411321 dostat postupne {12427545, 41564, 411321} tieto tri cisla. Vytvor si pattern s regularnym vyrazom:

Pattern numPattern = Pattern.compile("\\d+"); // \d znamena ze tvojmu paternu vyhovie 
						// iba cislo a + je kvantifikator 
						// cize jedno a viac.
Matcher numMatcher = numPattern.matcher(line);
// Teraz uz ich len po jednom vyhladat
ArrayList<Integer> numbers = new ArrayList<Integer>();

while(numMatcher.find()){ // Ak najde vyhovujuci substring vrati true
	numbers.add(Integer.valueOf(numMatcher.group())); // group() vrati najdeny 
							// substring
}

Ako funguje Pattern:  http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Ako funguje matcher: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html

Java › Prázdný řádek při zápisu do…
4. 7. 2013   #178790

To \n ti zariadkuje ak chces pisat rovnakeho riadku tak ho tam nedavaj ale daj radsej medzeru. 

vystup.print(pole[i] + " ");

// Som len poukazoval na to ze prikaz print() s "\n" roby to iste co println()
Java › Prázdný řádek při zápisu do…
3. 7. 2013   #178723

Namiesto metody println(nieco) pouzi iba print(nieco), mala by tam taka byt ak sa obre pamatam. A "\n" je escape character pre novy riadok.

Java › Užití polymorfismu
3. 7. 2013   #178722

Objekt je podobny. Akurat ze cez Cicavca nemozes pristupovat k premennym a metodam ktore boly definovane v psovi. Cize cez Cicavca urcite nezavolas metodu {getDlzkaSrsti(), getPocetNoh(), getPlemeno()}, ktore su definovane iba pre Psa. Ale zato mozes pretipovat premennu cicavec na psa, ak bola vytvorena ako pes, resp. objekt rozsirujuci psa. napr. HunatyPes: 

Savec savecAlik = new Pes();
Pes pesAlik = (Pes) savecAlik; //Vdaka tomu ze je to definovane ako pes
Java › JScrollpane pridani JPanel
25. 6. 2013   #178435

vloz ich do nejakeho JComponentu s tebou nastavenym layoutom a ten vloz do JScrollPane. 

JPanel mainPanel = ...;
JPanel panel1, .... , panel10

mainPanel.setLayout(....);

mainPanel.addComponent(panel1,...);
.
.
.
mainPanel.addComponent(panel10,...);

JScrollPane scrollPane = new JScrollPane(mainPanel);
Java › JPanel jako osma rana egyptska
10. 6. 2013   #177728

Aky si nastavil layout? Lebo ak mas v komponente co ktorej vkladas ten JPanel mas nieco ine ako BoxLayout tak ti to nepojde. Lebo vsetky ostatne ignoruju nastavenia pozicie a velkosti. Precitaj si nieco o BoxLayout (ja ho nepouzivam) http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html. Potom je uz len nejaky co pouziva fixovane hodnoty, ale tam jedine zakazat resize okna.

Potrebujes to urcite robit prave takto? Lebo ak nie tak mozes pouzit aj komponenty ako JLabel. Ja to robievam tak ze si nastavim GridBagLayout a nastavim si ho a potom len vkladam komponenty do  Jpanelu a ten potom vlozim do komponenty kde chcem znova pomocou GBL (isto to nieje najefektivnejsie, ale za to ked resiznem okno stale je to pouzitelne).

Java › Arkanoid pohyb míčku
6. 6. 2013   #177439

neukladat polohu ako int, ale ako nieco s pohyblivou destainnou ciarkou.

Java › programování..
3. 6. 2013   #177161

Ku hram vedie nie prave najkratsia cesta. Zacni tym ze si zosenies nejku peknu knihu o programovani. Ked budes oboznameny so zakladmi programovacieho jazyka. Mozes zacat na nete hladat tutoriali a ucit sa pouzivat rozne kniznice. Taktiez padne na uzitok vediet co to o algoritmizacii a datovych strukturach. Citaj zdrojove kody druhych, aby si si osvojil dobre programovacie navyky (s tym mam este stale poroblem aj ja, casom pochopis preco, hlavne ked kod narastie do vacsich rozmerov). Tak isto je vhodne dostatocne dobre zvladat matematiku. A samozrejme pis a skusaj co to robi. A program, to je uplne jedno, zdrojak napises aj v notepade, dolezite je mat kompilator pre dany jazyk. Ale stiahni si nejake IDE s automatickym doplnanim kodu a popup napovedou (nieco ako eclipse, netbeans, visual studia a neviem co vsetko). Jo ale to asi nebude tvoj problem, je treba vedeit po anglicky tak aby si dokazal citat s porozumenim prevazne odborne texty.

Java › TCP komunikace a přístup do…
2. 6. 2013   #177151

Ahoj tu je nieco co som teraz na rychlo zbuchol, jabber na mna je: sleepY771[na]jabber[bodka]cz . Tu je ten kod, opraveny a dorobeny, ale stale su tam nejake chyby, no nemam na to teraz cas: 

Connection.java:

import java.io.IOException;
import java.net.Socket;


public class Connection {

	private boolean connected = false;
	private Socket connectionSocket = null;
	private MyReader reader = null;
	private MyWriter writer = null;
	private Thread readerThread = null;
	private Thread writerThread = null;
	
	public Connection(String ip, int port){
		connectTo(ip, port);
	}

	public void close(){
		try {
			connectionSocket.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		reader.close();
		writer.close();
		setConnected(false);
		synchronized(readerThread){
			readerThread.notify();
		}
		writerThread.interrupt();	
		
	}
	
	public void sendMsg(String msg){
		writer.writeMsg(msg);
	}

	public Socket getSocket(){
		return this.connectionSocket;
	}

	public String recieveMsg(){
		String message = null;
		try {
			message = reader.readMsg();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return message;
	}

	public synchronized boolean isConnected(){
		return connected;
	}

	private synchronized void setConnected(boolean connected){
		this.connected = connected;
	}

	public void connectTo(String ip, int port){
		try {       
				this.connectionSocket = new Socket(ip,port);
				setConnected(true);
				reader = new MyReader(this);
				readerThread = new Thread(reader);
				readerThread.start();
				writer = new MyWriter(this);
				writerThread = new Thread(writer);
				writerThread.start();
			}
			catch(IOException ioe){
			// odchitit a spracovat vynimku
			}
	}
	
	public static void main(String arg[]){
		Connection con = new Connection("127.0.0.1", 4444);
		con.sendMsg("Hi!");
		System.out.println("Got message: "+ con.recieveMsg());
		con.sendMsg("exit");
		con.close();
	}

}

MyReader.java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class MyReader implements Runnable {
	
	private BufferedReader reader;
	private Connection connection;
	private Thread currentThread = null;
	private String msg = null;
	private boolean recieved = false;
	
	public MyReader(Connection connection){
		this.connection = connection;
		try {
			reader = new BufferedReader(new InputStreamReader(connection.getSocket().getInputStream()));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	

	public void run(){
		try{
			while(connection.isConnected()){
				String msg = reader.readLine(); // Zda sa mi ze sa blokuje do vtedy pokial nieje ready
				System.out.println("Got msg: "+msg);
				setMessage(msg);
				System.out.println("Msg set");
				//synchronized (currentThread) {
				//	currentThread.notify();
				//}
			}
		}
		catch(IOException ioe){
			
		}
	}

	private synchronized void setMessage(String msg){
		this.recieved = true;
		this.msg = msg;
		synchronized (currentThread) {
			currentThread.notify();
		}
	}

	private synchronized String getMessage(){
		recieved = false;
		return this.msg;
	}

	private synchronized boolean isRecieved(){
		return this.recieved;
	}

	public String readMsg() throws InterruptedException{
		currentThread = Thread.currentThread();
		synchronized (currentThread) {
			while(!isRecieved()){
				currentThread.wait();
			}
		}
		
		return getMessage();
	}

	public void close(){
		try {
			reader.close();
			System.out.println("Reader closed!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		currentThread.interrupt();
		currentThread = null;
		
	}

}

MyWriter.java:

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class MyWriter implements Runnable {

	private Connection connection = null;
	private PrintWriter writer = null;
	private String msg = null;
	private boolean waitForMsg = true;
	private Thread writerThread = null;

	public MyWriter(Connection connection) {
		this.connection = connection;
		try {
			this.writer = new PrintWriter(new OutputStreamWriter(connection.getSocket().getOutputStream()));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public synchronized void writeMsg(String msg) {
		this.msg = msg;
		waitForMsg = false;
	}

	public synchronized String getMsg() {
		waitForMsg = true;
		return this.msg;
	}
	
	public synchronized boolean isWaiting(){
		return waitForMsg;
	}

	@Override
	public void run() {
		writerThread = Thread.currentThread();
		while (connection.isConnected()) {

			try {
				synchronized (writerThread) {
					if (isWaiting() && connection.isConnected()) {
						writerThread.wait();
					}
				}
				System.out.println("Writing msg: "+getMsg());

				writer.println(getMsg());
				writer.flush();
			} catch (InterruptedException e) {
				
			}
		}
	}
	
	public void close(){
		writerThread.interrupt();
		writerThread = null;
		writer.close();
	}

}

a ako server som pouzil EchoServer, kody su aj na nete ale tu ti ho dam, mierne upraveny:

EchoServer.java:

/*************************************************************************
 *  Compilation:  javac EchoServer.java
 *  Execution:    java EchoServer port
 *  Dependencies: In.java [VERSION IN THIS DIRECTORY ONLY] Out.java
 *  
 *  Runs an echo server which listents for connections on port 4444,
 *  and echoes back whatever is sent to it.
 *
 *
 *  % java EchoServer 4444
 *
 *
 *  Limitations
 *  -----------
 *  The server is not multi-threaded, so at most one client can connect
 *  at a time.
 *
 *************************************************************************/

import java.net.Socket;
import java.net.ServerSocket;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class EchoServer {
	
    public static void main(String[] args) throws Exception {
		boolean running = true;
        // create socket
        int port = 4444;
        ServerSocket serverSocket = new ServerSocket(port);
        System.err.println("Started server on port " + port);

        // repeatedly wait for connections, and process
        while (running) {

            // a "blocking" call which waits until a connection is requested
            Socket clientSocket = serverSocket.accept();
            System.err.println("Accepted connection from client");

            // open up IO streams
            BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
			PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
            // waits for data and reads it in until connection dies
            // readLine() blocks until the server receives a new line from client
            String s;
            while ((s = reader.readLine()) != null) {
				System.out.println("Recieving message: "+s);
                writer.println(s);
                writer.flush();
                if(s.equals("exit")){
					running = false;
				}
            }

            // close IO streams, then socket
            System.err.println("Closing connection with client");
            writer.close();
            reader.close();
            clientSocket.close();
        }
    }
}
Java › Metoda createGraphics
27. 5. 2013   #176768
Java › Délka pole, zápis čísel
27. 5. 2013   #176764

vypise to 7 a je to 5 xor ( exclusive or ) 2 to je 101 ^ 10 = 111.

Java › Výpočet příkladu
21. 5. 2013   #176409

Moze byt, otazkou je ze, ked uz to mas takto rozlozene ci sa ti vobec oplati tu knihovnu pouzit :) (nie ze by to nebolo jednoduchsie, ale jednoducho niekolko krat za sebou parsujes nejaky String, navyse aj tak budes musiet pouzit rekurentne vyhladavanie, ak budes mat zatvorky v zatvorkach, cize vlastne urobis vacsinu roboty). Ja som zatvorky riesil pomerne jednoducho tak, ze som povedal ze vsetko co je ohranicene nejakou zatvorkou je funkciou a teda ma prioritu ako cislo. Tu je kod ako som, ja robil taketo nieco: https://github.com/sleepy771/IsotopeCalculator/blob/master/src/isocalc/function/parser/TreeFunction.java. Nieje to idealne, ale mozno z tho nieco vycitas, alebo sa pozri do tych kniznic co som ti posielal

Java › problém se zobrazéním prvku…
17. 5. 2013   #176298

no addElement je metoda ktorou pridavas ten prvok, neviem asi to mas String. Tu je nieco co som napisal:

public class ListTest extends JPanel{
	
	DefaultListModel<String> leftListModel = new DefaultListModel<String>();
	DefaultListModel<String> rightListModel = new DefaultListModel<String>();
	JButton toLeft, toRight;
	JList<String> leftList, rightList;
	
	
	public ListTest(String[] array){
		setLayout(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.VERTICAL;
		gbc.insets = new Insets(0, 30, 0, 30);
		leftList = new JList<String>(leftListModel);
		rightList = new JList<String>(rightListModel);
		this.add(new JScrollPane(leftList), gbc);
		gbc.gridx = 1; 
		this.add(new JScrollPane(rightList),gbc);
		toLeft = new JButton("<<");
		toRight = new JButton(">>");
		gbc.fill = GridBagConstraints.NONE;
		gbc.gridy = 1;
		this.add(toLeft, gbc);
		gbc.gridx = 0;
		this.add(toRight, gbc);
		for(String element : array){
			leftListModel.addElement(element);
		}
		createButtonListeners();
	}
	
	private void createButtonListeners(){
		toRight.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(!leftList.isSelectionEmpty()){
					System.out.println("Presuvam");
					int sIndex = leftList.getSelectedIndex();
					rightListModel.addElement(leftListModel.remove(sIndex));
				}
			}
			
		});
		
		toLeft.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(!rightList.isSelectionEmpty()){
					System.out.println("Presuvam");
					int sIndex = rightList.getSelectedIndex();
							leftListModel.addElement(rightListModel.remove(sIndex));
				}
			}
			
		});
	}
	
	public static void main(String[] arg){
		String[] el = new String[30];
		for(int i=0; i<30; i++){
			el[i] = "Element "+i;
		}
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800, 600);
		frame.add(new ListTest(el));
		frame.setVisible(true);
	}
}
Java › problém se zobrazéním prvku…
17. 5. 2013   #176282

Vytvor si DefaultListModel a predaj ho JListu, ked do neho (vlozis, vymazes) prvok tak by sa ti automaticky mal updatnut JList.

Java › problém se zobrazéním prvku…
17. 5. 2013   #176277

Z JListom vies viac-menej narabat ako s listom. Cize vies do neho vkladat, vyberat a mazat prvky. A on sa musi updatnut a to zapricini volane metody fire....// uz si nepamatam nazov. Cize ak to chces cez arrayListy (s tym som sa strasne dlho trapil, ako prepojit arraylist s JListom, aj tak som to nakoniec robil tak ze vsetko som za kazdym zmazal a natiahol znova. V tomto je Java strasne zle spravena). Ale ak to nieje nic narocne, tak a nepotrebujes nutne k tomu arraylisty, tak pozivaj JListy.

Java › GUI Problem - ovladani klave…
17. 5. 2013   #176276

1.) Niesom programator

2.) Nerobim z teba blbca

3.) Nevidim tvoj kod, takze neviem preco ti stvorec uskakuje, resp. zostava stara poloha (toto viem to je zrejme preto ze za kazdym kreslis a obsah sa nemaze, takze musis prekrit ten object co tam bol znova pozadim a az potom nakreslit novy).

4.) Bol to navod ako by som to robil ja, taky ze sa vyhnes zmienenym problemom. Lebo za kazdym kreslis, cely obrazok na obrazovku a nie len stvorec, cize tvoj povodny obrazok sa prekryje novym s rovnakou velkostou.

Ospravedlnujem sa ti, ak ta moj koment urazil. Tak teraz to skusim inak:

class MyCanvas extends JPanel{
// Ta affina transformacia sa hodi lebo mozes pouzivat zlozitejsie objekty,
// alebo presuvat viacero objektou, preto by som ju na tvojom mieste pouzil
	
	Shape object;
	Color objColor;
	Dimension windowSize;
	AffineTransform af;
	Timer timer;

	public MyCanvas(){
		// kod
		timer = new Timer(20, this);
		timer.start();
	}

	@Override
	public void paint(Graphics g){
		update(g);
	}

	@Override
	public void update(Graphics g){
		Graphics2D g2d = (Graphics2D) g;
		// Prekreslis cele okno napriklad na bielo, pripadne mozes len objekt
		g2d.setColor(Color.WHITE);
		g2d.drawRect(0,0, windwSize.width, windowSize.height);
		// Nastavis farbu na farbu objektu
		g2d.setColor(objColor);
		g2d.draw(object);
	}
	
	// Event Timeru
	public void actionPerformed(ActionEvent e){
		object = af.createTransformedShape(object);
		repaint();
	}
}

Takze, asi budes musiet prekreslit za kazdym stary objekt pozadim a potom len updatnut JPanel. Na updatovanie existuje metoda repaint(), nemusis volat update(Graphics g).

Java › Výpočet příkladu
16. 5. 2013   #176257

No tak to si musis napisat sam. Ked som ja take nieco robil, tak som pouziva strom, s tym ze cislo (resp. funkcia) ma najvyssiu prioritu a opertory idu postupne {(*,/), (+,-)}, a koren je prvkom z tohto pola (aj ked Ved. cisla, netvoria ani len komutativnu grupu, vzhladom na poeraciu scitovania, ale cisto teoreticky) s najnizsou prijoritou, cize + alebo -.

priklad: sin(3*(15-4)+2*(cos(3) - 1):

    |    15    4   |           | cos(3)         1 |

    | 3     -       |      2    |            -        |

sin|   *           |         *

                        +

A potom som volal pre kazdy nod len getValue() a ten mi vracal cislo, alebo ak to bola funkcia tak tu najskor spocital a takto iteroval az sa nedostal po cislo. Tam mozes vypisovat aj medzivypocty.

Java › GUI Problem - ovladani klave…
15. 5. 2013   #176242

A preco nekreslis najskor do backbufferu a az ten vykreslis na obrazovku. Bez toho, aby si sem napisal kod ti asi nikto nepomoze. Tu je asi ako by som to je riesil:

//Casom pochopis preco je pouzivanie af lepsie
AffineTransformation objTransf = new AffineTransformation();
VolatileImage backbuffer = createVolatileImage(w,h);
Shape obj = // nejaky Shape s nejakou poziciou
int velocity = 3;
// Treba ich sinchronizovat lebo ich volas eventami a zaroven
// pouzivas Timer
public synchronized void moveDown(){
	objTransf.move(-velocity,0);
}

public synchronized void moveUp(){
	objTransf.move(velocity,0);
}

public synchronized void moveLeft(){
	objTransf.move(0,-velocity);
}

public synchronized void moveRight(){
	objTransf.move(0, velocity);
}


new Timer(20, new ActionListener(){
	public void actionPerformed(ActionEvent e){
		obj = objTransf.getTransformedShape(obj);
		// overenie toho ci volatileImage nestratils svoj obsah
		Graphics2D g = backbuffer.createGraphics();
		g.draw(obj);
		// tu skonci overovanie a uz len vykreslis do Canvasu
		canvas.repaint();
	}
});

DoubleBuffering sa pouziva na to aby si sa zbavil tearingu. Cize precitaj si nieco o tom ako sa pouziva Grafika, VolatileImage, Timer, ako funguje Shape a Affinna Transformacia.

Java › Výpočet příkladu
15. 5. 2013   #176240

no to zalezi co od toho vsetkeho chces, lebo to co si napisal by bolo velmi neefektivne na take nieco ako: 4*(sin(12)+ 15*(3-2)/4*tan(cos(1-4*sin(0.1)))). A ak sa ti to nechce programovat tak pouzi kniznicu, nico ako symja, jep, exp4j. Vacsinou to funguje velmi jednoducho len to toho vlozis cely String a spustis vypocet. pozri si priklady.

Java › java prikazovy riadok
14. 5. 2013   #176178

   

Ale podla toho exceptionu pri zadani java hello tam davas java hello.java. Ak ti to teda stale vyhadzuje tento exception. Tu som nasiel video tutorial, ako sa to spusta, lebo neviem ako ti to inak vysvetlit, pripadne neviem co si este nespomenul:

Java › java prikazovy riadok
13. 5. 2013   #176162

piso to hello bez .java cize nie:

java hello.java

ale iba

java hello

Java › java prikazovy riadok
13. 5. 2013   #176153

Compiluje sa takto:

javac <MenoClassu>.java

A spusta sa takto:

java <cesta.cez.package.ku.classu> // a bez .java alebo .class

Cize napriklad:

class HelloWorld{
	public static void main(String[] arg){
		System.out.println("Hello, World!");
	}
}

sa nastav do adresara, kde mas vytvoreny HelloWorld.java a urob nasledovne:

javac HelloWorld.java

a pre spustenie

java HelloWorld

a musi to bezat.

Java › Citanie zo suboru - Substring
13. 5. 2013   #176149

To je celkom siroky pojem urcite slova, podla coho rozlisujes ktore slovo chces kotre nie? Su to slovesa, podstatne mena, pripadne nejake kluce? Z urcitostou ti viem, iba povedat, ze nikto ti tu z toho co si definoval, nebude vediet napisat konkretny pripad, lebo ludia vacsinou nevlastnia vestecku gulo prip. kasandru (Red Dwarf). Ale tu je aspon nieco vseobecne:

String line = reader.readLine();
line = odstranInterpunkcneZnamineka(line);
line = orezMedzeryNaZaciatkuAKonci(line);
String[] words = line.split("\\s+");
for(String word : words){
	if(jeHladanymSlovom(word)){
		writer.println(word);
	}
}
Java › java prikazovy riadok
12. 5. 2013   #176124

a mas spravne cestu ku classu, kde je main metoda, tzn. aj s package-om?

Java › Nefunkční pole s rectanglem.
10. 5. 2013   #176060

Od kial mas to Graphics je z komponenty kam chces kreslit. Robi sa to tak ze overridnes metodu paintComponent, alebo si z danej komponenty Graphics vypytas cez metodu getGraphics() (alebo createGraphics()).

Java › rekurzivní metoda, počet uzl…
9. 5. 2013   #175975

Treba overit ci pravy resp. lavy potomok existuju a ak nie tak za danho potomka pripocitat 0 inak pocet uzlov daneho potomka.

Java › Odkaz na objekt ve 2dGraphics
9. 5. 2013   #175974

Vacsinou sa to nerobi. Druha vec je ze je dobre mat objekty nastavena ako privatne a pozivat gettery a settery.

Java › Layout Manager
6. 5. 2013   #175844
Java › Odkaz na objekt ve 2dGraphics
6. 5. 2013   #175843

Pozri si AffineTransforamtion, to robi presne to co tvoj ShapeMover a este ovela viac. Pripadne ak pouzivas ine objekty ako <? extends Shape>. Tak budes nieco podobne muste naprogramovat sam. Ako uz bolo vyssie navrhovane, pouzi kniznicu Graphics2D a objekty z nej. Alebo si vytvor vlastne, ako som pisal vyssie, ale budes musit vytvorit aj vlastny ShapeMover podobne ako AffineTransoframtion:

public abstract class MyShape{
	Point position = null; // Kazdy objekt ma nejaku poziciu
	
	// konstruktor

	public void abstract draw(Graphics g);

	public void getPosition(){
		return position;
	}

	public void setPostition(Point p){
		this.position = p;
	}
// dalsie metody
}

public class ShapeMover{
	int dx=0, dy=0;

	// Metoda ktora nastavy posuv o dx a dy	
	public void move(int dx, int dy){
		dx = 0;
		dy = 0;
	}

	public void move(Point dp){
		dx = dp.x;
		dy = dp.y;
	}

	public MyShape transofrm(MyShape obj){
		Point p = obj.getPosition();
		p.setLocation(p.x + dx, p.y + dy);
		obj.setPosition( p ) // tato medota tu zhodou okolnosti v tomto priklade 
					// nemusi byt to pisem iba ak by si sa rozhodol 
					// pouzit nieco co si premenne x a y udrziava ako 
					// final.
	}
}

public class Canvas extends JPanel{
	// Metody ako vyssie
}
// Na toto vznikol Timer v jave ale urobim to inak
public class Animation implements Runnable{
	
	// Napriklad zadas cestu po ktorej sa bude pohybovat, tu si musis vytovrit
	// Moze to byt napriklad List<Point> -ov cez ktore pojdes, alebo este lepsie
	// List diferencii pointov lebo tej je v skutocnosti nezavysli od toho kde
	// sa aktualne objekt nachadza
	public Animation(Path p, long sleep, Canvas c, List<MyShape> shapes){
		
	}
	// Toto vytvori path polpriamku
	public Animation(int dx, int dy, long sleep, Canvas c, List<MyShape> shapes){

	}
	// Tu bude urcite treba zachytit vynimky InterruptedException
	public void run(){
		for(Point p : path){
			shapeMover.move(p)
			for(MyShape shape : shapes){
				shape = shapeMover.transform(shape);
			}
			c.repaint();
			Thread.sleep(sleep); // V tomto mieste
		}
	}
}

Vseky objekty v classe Animation sa volaju rovnako ako parametre konstruktoru a musis v nome este vytvorit Objekt ShapeMover.

Java › Síťový program(UDP)
6. 5. 2013   #175842

#5 infern0
Ako: (byte)4

Java › Layout Manager
1. 5. 2013   #175622

GridBagLayout je velmi dobre konfigurovatelny a ten nadpis by som strcil do ineho poanelu ako tlacidla, labely a textfieldy.

Java › System.in.read()
29. 4. 2013   #175567

Uplne banalny nieje, java pomocou metody System.in.read() nerobi uplne to co by si chcel. Tak isto sa neda pouzit DataInputStream readInt(), lebo ten je len na citanie intu z DataOutputStreamu. Tu je kod co funguje. Jednoducho nacitas riadok do BufferedReaderu a ulozis ho ako String a ten potom sparsujes. Tu je kod:

import java.io.BufferedReader;
import java.io.InputStreamReader;
class Read{
	public static void main(String[] arg) throws java.io.IOException{
		int x = 0;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String consoleInput = br.readLine();
		x = Integer.valueOf(consoleInput);
		System.out.println(x);
	}
}
Java › Jak ošetřit zadávání data (…
29. 4. 2013   #175564

Edit: islo mi hlavne o vyhnutiu sa vyhodeniu nejakeho exceptionu.

Java › Jak ošetřit zadávání data (…
29. 4. 2013   #175563

Som poteseny, tu mi neslo az tak o samotne vyhnutie sa Calendar-om, ale o to aby si si overil ze uzivatel tam nezadal uplnu nesparsovatelnu hlupost typu: "ruzovy.slon;2011:oktober,etc...". Aj ja som ich kedysi nemal rad, ale podlahol som. :D. Jednoducho ^\\d{1,2} znamena ze string musi zacinat jedno alebo dvojcifernym cislom \\. ma nasledovat bodkou \\d{1,2} za nou znova jedno alebo dvojciferne cislo \\. znova bodka a \\d{4} stvorciferne cislo. Cize sa vyhnes slovnemu zapiseu mesiacou dni, roznym hlupostima atd... . Neobmedzujem ta v nepuziti calendaru, ale ked ho vytvaras tak by si mal do neho zadavat cele cisla, inak ti tam vybehne pri parsovani Numberformat exception.

Pripadne tu som nasiel este ine riesenia: http://www.rgagnon.com/javadetails/java-0099.html . Je to s pouzitim Calendarov.

Java › Button v awt - nastaveni akce
29. 4. 2013   #175555

   

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame implements ActionListener {

	JButton createPanelButton = null;
	int n = 0;
	public MyFrame() {
		setSize(400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
		createPanelButton = new JButton("Create Panel");
		createPanelButton.addActionListener(this);
		add(createPanelButton);
		setVisible(true);
	}

	public void createPanel() {
		JPanel panel = new JPanel();
		n = (n+1) % 5;
		switch(n){
		case 0:
			panel.setBackground(Color.YELLOW);
			break;
		case 1:
			panel.setBackground(Color.RED);
			break;
		case 2:
			panel.setBackground(Color.BLUE);
			break;
		case 3:
			panel.setBackground(Color.GREEN);
			break;
		case 4:
			panel.setBackground(Color.BLACK);
			break;
		}
		
		add(panel);
		setVisible(true);
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getSource().equals(createPanelButton)){
			createPanel();
		}

	}
	
	public static void main(String[] arg){
		new MyFrame();
	}

}
Java › Button v awt - nastaveni akce
29. 4. 2013   #175551

Sry tam ma byt void

Java › Button v awt - nastaveni akce
29. 4. 2013   #175550

   

class MyFrame extends JFrame implements ActionListener{
	//...
	JButton createPanelButton = null;

	public MyFrame(){
		// ...
		createPanelButton = new JButton("Create Panel");
		createPanelButton.addActionListener(this);
		// ...
	}

	public createPanel(){
		// tu sa vytvori a umiestni panel
	}

	public void actionPerformed(ActionEvent e){
		if (e.getSource.equals(createPanelButton){
			createPanel();
		}
	}
}

Preco vkladas awt Button do swing JFramu, tieto veci by sa nemali miesat. Daj tam radsej JButton.

Java › Jak ošetřit zadávání data (…
29. 4. 2013   #175549

A co takto pouzit regularny vyraz: ^\d{1,2}\.\d{1,2}\.\d{4}$ zbasti to iba d.m.yyyy alebo dd.m.yyyy alebo d.mm.yyyy alebo dd.mm.yyyy a nic ine, da sa stym slusne vyhrat. Ak string vyhovie splitnes ho podla bodky a overis este ci dni su v rozsahu od 1 do 31 a mesiace 1 do 12 a rok ak sa ti bude chciet obmedzit od teraz do par nasledujucich rokov teda, vypitas si sucastny datum a budes ho chciet od sucastnosti do, co javiem nasledujucich 50 rokov.

public boolean overenieDatumu(String datum){
	if(datum.matches("^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$")){
		String[] date = date.split("\\.");
		int day = Integer.valueOf(date[0]);
		int month = Integer.valueOf(date[1]);
		int year = Integer.valueOf(date[2]);
		return validateDay(day) && validateMonth(month) && validateYear(year);
	}
	return false;
}

public boolean validateDay(int day){
	return day < 32 && day > 0; // Mozes to urobit aj pre jednotlive mesiace a prestupne roky, fantazii sa medze nekladu
}

public boolean validateMonth(int month){
	return month > 0 && month < 13
}

public boolean validateYear(int year){
	return year > 2012 && year < 2064;
}
Java › GUI šachovnice
28. 4. 2013   #175522

#18 MaxDJs
No ked ho budes mat na polickach nic nemusis pocitat.

Tu je nieco co som teraz zbastlil, upravi si tam musite spravit sami:

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Color;
import java.awt.Dimension;

class ChessBoard extends JPanel implements MouseListener{
	
	public ChessBoard(){
		this.addMouseListener(this);
	}
	
	public void paintComponent(Graphics g){
		for(int n=0; n<64; n++) {
			g.setColor( ((n+n/8)%2==0)?Color.BLACK:Color.WHITE );
			g.fillRect((n%8)*50, (n/8)*50, (n%8)*50+50, (n/8)*50+50);
		}
	}
	
	public void mouseClicked(MouseEvent e){
		System.out.println("Clicked on position ("+e.getX()+","+e.getY()+")");
		int posY = e.getY()/50;
		int posX = (e.getX()/50+1);
		char charPosY = (char)posY;
		charPosY +='a';
		System.out.println("Chess position: "+posX+""+charPosY);
	}
	
	public void mouseExited(MouseEvent e){
		
	}
	
	public void mouseEntered(MouseEvent e){
		
	}
	
	public void mousePressed(MouseEvent e){
		
	}
	
	public void mouseReleased(MouseEvent e){
		
	}
	
	public static void main(String[] arg){
		javax.swing.JFrame frame = new javax.swing.JFrame();
		frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
		frame.setSize(400,420);
		frame.setLayout(new java.awt.GridLayout());
		ChessBoard cb = new ChessBoard();
		frame.add(cb);
		frame.setVisible(true);
	}
}

Kod si upravte podla potreby.

Java › GUI šachovnice
28. 4. 2013   #175518

#12 MaxDJs
To x0 a y0 su konstanty, jednoducho su to vzdialenosti v pixeloch medzi bodom (0,0) pri kliknuti mysi a pravym hornym rohom sachovnice, predpokladam ze sachovnica je umiestnena v JPanele (ma svoj vlastny MouseListener), ktory cely vyplna, vtedy mozes dat x0=0 a y0=0, za inych okolnosti treba ziskat polohu x0 a y0. Napriklad to moze byt relativna vzdialenost komponenty vnorenej v inej komponente, ktra implementuje MouseLIstener.

Offtopic › Co posloucháte za hudbu?...
27. 4. 2013   #175487

Niesom programator ani, clovek od PC :( . Metal: CoB, Wintersun, Norther, Kalmah, Insomnium, Arch Enemy, starych Sonic Syndikate, Sirenia, Sangre Eterna, (Edguy, Avantaisa), (Hypocrisy, Pain), Halogen, Diablo swing orchestra, Light this City, Lacuna Coil, Alestorm,  The Agonist a v neposlednej ba az v prvej rade Ironov, ...

Rock/Hard Rock: AC/DC, Guns n' Roses, The Hives, Whitey,  ...

Elektroniku: Slagsmalsklubben, Infected Mushroom, Goodluck,  a furu nightcore

Electroswing: Caravan Palace, Lyre Le Temps, Swing Republic, Kormac, Goldfish, Deluxe, G-Swing, Electric swing circus, Dimaa, Tape Five, Swingrowers, Emmanuel Bravo, par pesniciek od Parov Stellar a kazdy iny dobry remix.

Java › GUI šachovnice
27. 4. 2013   #175486

Povedzme ze policko ma velkost (50px x 50px) a nech policko 1a zacina na pozicii (x0, y0) pre nas v pravo hore. Takze ak Je zachiteny event nad poziciu (x,y), staci spocitat floor((x,y) - (x0,y0))/50), (cela cast cisla, zaporne ta nezuimaju)->(policko_x, policko_y). 

Napriklad (x0,y0) = (100,100) policko ma velkost 50x50 a kliknute bolo na poziciu (x,y)=(430, 220).

1.) (x,y)-(x0,y0) = (330,120)

2.) (330,130) / 50 (vyska a sirka su rovnake) = (6.6, 2.6) // celociselne delenie ti da aj tak priamo cisla (6,2)

(nepovinne ak pouzivas iba cele cisla) 3.) 6.6 je medzi 6 a 7 cize kliknute bolo na 6 policko a 2.6 je medzi 2 a 3 cize kliknute bolo na 2. policko to iste ti da aj floor()

4.) bacha indexovanie zacina od 0 podla tohto vzorca, cize poloha na sachovnici je 7c.

Sedi to ak si spravis ze 1 zacina je na intervale <100,150); 2 je na <150,200); 3 je na <200, 250); 4 je na <250,300); 5 je na <300,350); 6 je na <350,400); 7 je na <400, 450); 8 je na <450, 500>.

Java › Zaseknutí při přesunu objekt…
26. 4. 2013   #175457

   

class MyMask extends TimerTask{
	private Animation animation = null;
	//1. sposob
	public MyMask(Animation animation){
		this.animation = animation
	}
	//2. sposob
	public void setAnimation(Animation animation){
		this.animation = animation;
	}

	public void run(){

	}
}
Java › GUI šachovnice
26. 4. 2013   #175456

Tieto Layouty si pocitaju velkost ktoru budu jednotlive komponenty zaberat same. Cize navrhol by som kompromis, nepouzit ani jeden z vyssie spomenutych, ale pouzit GridBagLayout, ktory je o nieco viac konfigurovatelny.

JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(30,30,30,30) // Nastavi v pixeloch odsadenie od ineho komponentu
gbc.fill = GridBagConstaints.BOTH; // Vyplni priestor horizontalne aj vertikalne
gbc.weightx=1.;
gbc.weighty=1.;
//Tieto dve su defaultne 0 to je poloha v mriezke ak tam bude viac komponentou
gbc.gridx=0; 
gbc.gridy=0;
frame.add(panel, gbc);
frame.setVisible(true);
Java › GUI šachovnice
24. 4. 2013   #175427
Java › AWT a Swing dohromady
24. 4. 2013   #175423

Jasne ze sa da, ale vo vacsine pripadou je to zbytocne a budes mat velky problem s prekrivanim sa komponentou, akosi tie awt vyskakuju az moc do popredia. Niecim takymto sa to da upravit setDefaultLightWeightPopupEnabled(false), ale miesat sa to neodporuca.

Java › GUI šachovnice
24. 4. 2013   #175422

Aj obrazok v JPanely mozes mat interakivny. Staci si odchytit MouseListener -> mouseClicked(MouseEvent e){e.getX(); e.getY()}. A uz len spocitas kde bolo kliknute. Ten obrazok mozes generovat, tak ze vykreslis Rectangle na kazdu poziciu a len striedas farby napriklad (i+j)%2->{1,0}, kde i je riadok a j je stlpec, malo by to pekne prstriedat. Obrazok budes menit, ked resiznes, minimalizujes atd.... . A navyse vies do teoho kreslit priamo figurky, nemusis volat tlacitko na ktore sa ma premiestnit. A casom mozno budes vediet spravit aj animaciu, co je s tlacitkami nemozne.

Java › Zaseknutí při přesunu objekt…
23. 4. 2013   #175387
Java › htmltotextparser
21. 4. 2013   #175314

Precitaj si nieco o tom ako funguje File: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html. Tam v tom priklade to vidis hned na zaciatku. String pathname je absolutna cesta cize napriklad: "/home/userName/HTMLNaParsovanie.html". Pripadne mozes pouzit URI. Pozri dokumentaciu to bude najlepsie, tam sa dozvies furu zauimavych veci.

Java › Zaseknutí při přesunu objekt…
21. 4. 2013   #175282

A co takto pouzit iny thread na prekreslovanie.

Java › ukladanie do súboru + dedeni…
19. 4. 2013   #175221

Za prve neviem preco si si daval tu namahu a robil si class Dielo abstraktne a potom si vytvoril nove class-i, ktore dedili z Diela aj ked obe su uplne rovnake. Toto rob az ked naozaj ten class o niec rozsiris a to uz nebudes len takto zapisovat. A obsah v hociakom inom zdedenom classe bude znova len String, alebo sa mylim? Druha vec, zbytocne serializujes ak to nebudes ukladat ako objekt. Nakoniec je dobre veci splachnut ked zapisujes, cize flush(). Tu som napisal nieco co funguje:

 Diela.java

import java.util.Calendar;
import java.util.GregorianCalendar;

class Dielo{
	private String autor, nazov, vydavatelstvo, obsah;
	private Calendar datumVydania;
	
	public Dielo(){
		this("", "", "", "", new GregorianCalendar());
	}
	
	public Dielo(String autor, String nazov, String vydavatelstvo, String obsah, Calendar datumVydania){
		this.autor = autor;
		this.nazov = nazov;
		this.vydavatelstvo = vydavatelstvo;
		this.obsah = obsah;
		this.datumVydania = datumVydania;
	}
	
	public void setAutor(String autor){
		this.autor = autor;
	}
	
	public void setNazov(String nazov){
		this.nazov = nazov;
	}
	
	public void setObsah(String obsah){
		this.obsah = obsah;
	}
	
	public void setVydavatelstvo(String vydavatelstvo){
		this.vydavatelstvo = vydavatelstvo;
	}
	
	public void setDatumVydania(Calendar datumVydania){
		this.datumVydania = datumVydania;
	}
	
	public String getAutor(){
		return autor;
	}
	
	public String getNazov(){
		return nazov;
	}
	
	public String getVydavatelstvo(){
		return vydavatelstvo;
	}
	
	public String getObsah(){
		return obsah;
	}
	
	public Calendar getDatumVydania(){
		return datumVydania;
	}
}

Kniznica.java

import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;


class Kniznica{
	private ArrayList<Dielo> kniznica;
	
	public Kniznica(){
		kniznica = new ArrayList<Dielo>();
	}
	
	public void vlozDielo(Dielo dielo){
		kniznica.add(dielo);
	}
	
	public void vlozDiela(Dielo[] diela){
		for(Dielo d: diela)
			kniznica.add(d);
	}
	
	public void zmazDielo(int index){
		kniznica.remove(index);
	}
	
	public void zmazDielo(Dielo dielo){
		kniznica.remove(dielo);
	}
	
	public Dielo getDielo(int index){
		return kniznica.get(index);
	}
	
	public void zapisDoSuboru(String nazovSuboru){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		try{
			PrintWriter pw = new PrintWriter( new BufferedWriter( new FileWriter(nazovSuboru) ) );
			for(Dielo dielo : kniznica){
				pw.println(dielo.getNazov());
				pw.println(dielo.getAutor());
				pw.println(dielo.getVydavatelstvo());
				pw.println(sdf.format(dielo.getDatumVydania().getTime()));
				pw.println(dielo.getObsah());
				pw.println();
				pw.flush();
			}
			pw.close();
		}
		catch(IOException ioe){
			System.err.println(ioe);
		}
	}

public static void main(String[] arg){
		Kniznica k = new Kniznica();
		Dielo d[] = {
			new Dielo("Kolmogorov, Fomin", "Zaklady teorie funkcii a funkcionalnej analyzy", "NechceSaMiHladat", "teoria mnozin, teoria miery, MP a TP, topologia, funkcionalna analyza, etc...", new GregorianCalendar(1972,0,1)),
			new Dielo("Kluvanek, Misik, Svec", "Matematika 1", "SVTL", "Uvod do diferencialneho a integralneho poctu", new GregorianCalendar(1956,0,1)),
			new Dielo("Kluvanek, Misik, Svec", "Matematika 2", "SVTL", "Nekonecne rady, Funkcionalne rady, Mocninne rady, Fourierove rady, Diferencialne rovnice, Viacrozmerne a Krivkove integraly, Teoria funkcii komplexnej premennej", new GregorianCalendar(1961,0,1))
		};
		k.vlozDiela(d);
		k.zapisDoSuboru("literatura.txt");
	}
}

Citat budes obdobne pomocou FileReader-u, BufferedReader-u, InputStreamReaderu a FileInputStream-u. Najdi si v API ako sa to pouziva. Uvedom si ze to mas zapisane v urcitom poradi, v tomto poradi musis aj citat.

Matematika › Pravděpodobnostní funkce náh…
19. 4. 2013   #175208

#2 Kapitán Bobr
Este ti chyba to dodatkove cislo, samozrejme neviem z coho sa taha to, cize neviem povedat, ak je to zo vsetkych tak sa to prenasobi 1/49, inak ak by to bolo ze taham len dalsie cislo tak to cele staci zvacsit o 1 cize C(7,6) * C(42,1)/C(49,7), ale tak to asi nebude, lebo by sa to zreme nevolalo dodatkove cislo. Treba dodefinovat cim je dodatkove cislo ine ako ostatne.

Java › Parsovanie matematickeho vyr…
19. 4. 2013   #175207

Dobry den,

potrebujem malicky hint, nie kod, s parsovanim matematickeho vyrazu. Skoro vsetko je pripravene. Jedine co potrebujem je zo vyrazou rozlist ci ide o cislo, operator, funkciu, posledne dve nebudu problem ak sa zbavim cisel.

Z vyrazu "4*(x^3*sin (2+tan(5*x)) - x+2*log(a-\n3*x)/4)" som dostat Map:

{@a=4*@e, @b=tan:5*x, @c=sin:2+@b, @d=log:a-3*x, @e=x^3*@c-x+2*@d/4}

kde operatory su zatial: {+,-,*,/,^} a preddefinovane funkcie su zapisane v tvare: "f:<vyraz vnutry funkcie>" neskor pribudnu dalsie. Vzdy funkcia zacina a-ckom.

Napadlo ma ze budem tie znaky citat za sebou, budem mat definovane podmienky pre cislo, premenu, funkciu ..., ak dalsi znak podmienku nesplni tak sa precitane spracuje a zacnem citanim noveho. Ale toto sa mi nezda velmi elegantne riesenie. Cize ak ma niekto nejaky iny lepsi navrh, tak by som poprosil.

Skusal som aj rozne kniznice na parsovanie matematickych vyrazou, ale z istych dovodou mi nevyhovuju.

Java › Generátor náhodných čísel
17. 4. 2013   #175129

Pripadne v classe Random mas taku metodu, ze nextGausian() -> ti generuje cisla s normalnym rozdelenim priamo okolo 0.

OS - GNU / Linux › Spustenie viacerych vypoctou…
16. 4. 2013   #175079

#3 sleepy

#Oprava na zaciatku ma byt
PROCESSORS=#n
ITERATOR=0
# a v if taktiez
ITERATOR=0
# a vo fo cykle
INPUT
OS - GNU / Linux › Spustenie viacerych vypoctou…
16. 4. 2013   #175078

Nakoniec som to riesil troska inak, lebo outputy si to vie zapisovat samo aj do vlastnych suborou. Cize zostavalo uz iba spustenie prave n procesou. Ale nechal som sa inspirovat &, nepocopil som vsak uplne ako vyuzit fg.

Tu je moj kod:

$PROCESSORS=#n
$ITERATOR
for $INPUT in $INPUT_FILES; do
	$APPLICATION $OPTIONS $INPUT &
	# Tu je zrejme treba niekde vyuzit to fg
	# ak by som to chcel
	# OUTPUT[$ITERATOR]=$($APPLICATION $OPTIONS $INPUT &)
	PID[$ITERATOR]=$! #Na zistenie pid-u poslednej spustenej aplikacie
	if [ $ITERATOR -eq $PROCESSORS ]; then
		wait ${PID[0]}
		wait ${PID[1]}
		# ...
		wait ${PID[n]}
		# Mozno by sa to dalo skratit nejako takto
		# for $I in 'seq 0 $PROCESSORS'; do
		#	wait ${PID[$I]}
		# done
		$ITERATOR=0
	fi
done
Matematika › Jacobiho iteracni metody.
12. 4. 2013   #174905
OS - GNU / Linux › Spustenie viacerych vypoctou…
9. 4. 2013   #174727

Dobry den,

potrebujem upravit script tak aby aplikacia vedela spustit viacero vypoctou naraz, lebo mam k dispozicii n-procesorovy stroj, aplikacia vie bezat prave na jednom procesore a ku kazdemu vypoctu mam vstup, celkovo mam m vstupov, kde m>n. Potrebujem aby mi naraz bezalo len n vypocou. Za pomoc vopred dakujem.

Tu je script co som apisal: 

for $input_file in $input_files
do
	output = $($APPLICATION $options $input_file)
	# do something with output
done
OS - GNU / Linux › linux-distro
9. 4. 2013   #174725

Arch ma perfektnu dokumentaciu a velmi dobre sa upravuje. Ale aj ked nebudes mat arch odprucam ti ich dokumentaciu, vacsina veci sa da aplikovat aj na ine distra. Na distribucii nezalezi, k tomu prides az sa s linuxom trocha oboznamis. Ale debian a debian based distra maju dost balickou, co je samozrejme plus, nestretnes sa tak casto s "dependecy hell". Na windowsacke programy Wine a co nejde vo vine to ide vo VirtualBoxe s nainstalovanym Windowsom (krajne riesenie).

OS - GNU / Linux › Jakou linuxovou distribuci -…
9. 4. 2013   #174723

Len tri slova: "Awesome window manager". Pre programovanie to prave, ked vies (C, C++, Java,...), tak te Lua script upravis, len letmim pohladom do toho co je tam pred tym napisane, bez toho aby si Lua vobec vedel, podla svojho gusta. Tu je nieco o awesome: http://awesome.naquadah.org/ a tu je nieco ku konfiguracii: http://urukrama.wordpress.com/2008/07/10/first-steps-with-awesome-window-manager/ . Z tychto zdrojov som sa to naucil.

Druha vec osekaj co nepotrebujes, zbytocne ti na pc bezi apache, ked vies ze nebudes robit stranky, sshd, ked vies ze sa nikdy nebudes prpajat z vonka na svoj pc atd... .

Java › Animace - pohyb objektu
7. 4. 2013   #174563

Uz tot ut zopar krat bolo. Potrebujes sy vytvorit nieco, kde sa to cele bude cmarat. Potom je dbre si vytvorit take nieco, ako backbuffer, idealne pouzit VolatileImage, ktory funguje tak ze to do neho nakreslis a potom sa pri refreshy prekresli,tvoj vytvor s back bufferu do komponenty {Canvasu, JComponentu,....}, pomocou repaint(). Taktiez potrebujes nejaky casovac, ktory bude volat repaint.

Offtopic › Elektromagnet a teleso(nároč…
7. 4. 2013   #174562

Ty nepotrebujes elektromagnet, elektromagnet vytvara magneticke pole, ty potrebujes nabytu gulu, ak chces aby to fungovalo tak, ze ti to bude lietat po kruhovej drahe.

Nekonecna plocha znamena, nekonecna, alebo nieco co sa ku nej blizy, tzn. nieco strasne velke, resp. ten system bude musiet byt dostatocne blizko tej nabitej platne. To len aby si vytvoril takmer homogenne elektricke pole, ktore vyrusi takmer homogenne gravitacne pole.

Java › Unsigned byte
26. 2. 2013   #172105
Java › Unsigned byte
26. 2. 2013   #172100

#2 Grungy
Neviem ci vytvorenie triedy je pamatovo vyhodnejsie ako pouzit 16bit short, kde mas 8B hlavicku xB(cislo tvojho typu) + zvisok na zarovanie na celociselny nasohok (8*n)B. Ma to svoje vyhody ale neviem ci stoja zato (neviem ze kolko toho chce posielat a naco to ma sluzit).

 #1 dan
Ja by som asi siahol po vacsom datovom type, konkretne po shorte, alebo ako ingiraxo uz napisal int a tam to ukladal a potom s tym pracoval.

Java › Spočítejte všechy bity, kter…
26. 2. 2013   #172098

#5 ingiraxo
Ano ale sak ani tie bit operatory niesu zase az tak nepochopitelne a zle.  

int cislo = nieco; // nahras cislo 
int pocetJednotiek = 0;
// int ma 32 bitov a ty ich prejdes vsetky
for ( int i = 0, n = 32; i < 32; i++) {
	// kontrolujes ci je na danom bite 1
	if ( (1<<i) & cislo != 0){
		pocetJednotiek++;
	}
}

Toto urcite nieje najefektivnejsie, da sa to este upravit, ale nema to od toho daleko.

#1 Marek
Funguje to tak ze si zoberes cislo a snazis sa ho cele preist bit po bit-e. Dolezity je tam akurat ten if. on jednoducho kontroluje ze ak bitshift 1 o i napr. (i = 3, 1<<3 = 00..001000) ma bitovu zhodu s cislom tak to urcite nieje 0 a vtedy vies ze na danom bit-e ma cislo urcite jednotku ( cislo = 0..0101011010 => 0..01000 & 0..0101011010 = 0..01000 lebo 4 bit je v cisle 1 ak by nebol tak dostanes 0), ak nie tak dostanes 0 a mas ze ak sa sa to v tom ife == 0 tak len pokracujes dalej a hladas az po 32 bit a tam skoncis;

Java › Spočítejte všechy bity, kter…
25. 2. 2013   #172038

Sak mas bite reprezentovany 1 -ami a 0-ami, cize bit moze byt v dvoch stavoch: vypnuty alebo zapnuty (0 ^ 1) napr.(000101010011101) no a ty mas spocitat pocet tych jednotiek.

Java › Programy, hry v jave
8. 2. 2013   #171251

Neviem ci to tu niekto pisal, necital som to tak dokladne. Chcem len poznamenat ze java kod sa da prekompilovat do nativneho kodu, napr. pomocou gcj. Ale nie vzdy je to vhodne, lebo kod nespustis na roznych platformach a ine o ktorych neviem, zevraj bezpecnost a velkost, ale to nech ti vysvetlia informatici. Napriklad CERN Colt nieje kompilovany do nativneho kodu, lebo v bytecode ma nieco okolo 90% vykonu voci nativnemu kodu. Zda sa mi ze aj openoffice je robeny v jave.

Dalsia vec .jar balik sa da tiez spustit priamo staci to mat nastavene, teda neviem ako sa to robi v oknach, ale v linux staci urcit ako sa ma dany subor spustat. A potom to ide po kliknuti. Cize netreba pisat vselijake skripty.

Matematika › jednostraná limita
6. 2. 2013   #171206

Ahoj predpokladam, ze sa pytas ako zistis ze to je +inf a nie -inf. Ak si vsimnes citatel a dosadis tam 5, vidis ze to vychadza 11 co je kladne cislo teda 11>0. Ak pocitas menovatel a dosadis tam 5 vyde ti 0. Lenze ty ides s tvojou limutou z prava teda od 6 cize 5+ > 5 a tym padom v menovateli bude zostavat vzdy strasne male ale kladne cislo. Ked delis 2 kladne cisla dostavas kladne cislo a tym padom ti ide limita do +inf.

Da sa to aj inak, mozno nazornejsie. Nech e>0: tvoja limita sa da napisat ako lim e->0 (2(5+e)+1)/((5+e) - 5), to je to ze ide sprava lebo e je vzdy viac ako 0 co sme si stanovili na zaciatku. = lim e->0 (11+2e)/e = lim e->0 11/e + 2, vies ze e>0 a ked delis 11 e-om, teda kladnym cislom dostavas sa do +inf a 2 na tom nic nezmeni leno +inf +2 = +inf

Matematika › Syntaxe MatLabu
24. 1. 2013   #170635

size ti da rozmery pre kazdy vektor co sa ti ulozi do m. Cize m(1) ti da romer 1. vektoru. a x = 1:m(1) = vektoru [1, 2, .., m] . Precitaj si matlabacky help, tam sa dozvies viac.

OS - GNU / Linux › Skype-výpadky hovoru
20. 1. 2013   #170406
Offtopic › Fyzika - magnetická sila med…
20. 1. 2013   #170404

Ono to nieje take jednoduche, kedze sa navzajom ovplyvnuju. Ale nieco som vyhrabal F = grad(m.B), kde m je magneticky moment magnetu v poli B.

Matematika › Problem s úlohou
20. 1. 2013   #170403

to je vec konvencie, ze z coho ratas tych 5%, ci je to z plochy strechy (teda ma pravdu on), alebo z plochy krytiny (teda mas pravdu ty). Co si ja pamatam na zakladke sme to vzdycky nasobily koeficientom (1 + alfa) a alfa > 0 (teda nieco take ako spocital tvoj spoluziak). Treba to robit, ako ste sa dohodly v skole.

Matematika › Matice - inverzní matice
20. 1. 2013   #170402

Existuje fura metod, ale kedze to zrejme namas pocitat na pc tak niesi zatazeny chybou pc. Najskor je dobre vedie t ci matica je regularna. To je taka ku ktorej existuje inv. (zistis podla hodnosti, alebo det, co sa jednoduchsie spocita). No a potom asi uzit Gausovu elim metodu.:

Zapis maticu A | I ako blokove matice A je tvoja I je jednotkova a teraz sa snazis riadkovimi operaciami upravit maticu A na jednotkovu a tie iste operacie robis aj na I.

Mas (A | I) => ({A1,...,Ak + lambda*Aj,....,An}^T | {I1,..., Ik + lambda * Ij,...,In}^T) a takto upravujes riadky az kym na prvo nedostanes jednotkovu maticu.

Pr.:

( 1 2 0 ) | ( 1 0 0 )

( 1 -1 1) | ( 0 1 0 )

( 1 0 3 ) | ( 0 0 1 )

odpocitam 2. od 1. a 2. od 3.

( 0 3 -1 ) | ( 1 -1 0 )

( 1 -1 1) | ( 0 1 0 )

( 0 1 2 ) | ( 0 -1 1 )

teraz 3. od 1. predelim -7 a odpocitam 1. od 3.

( 0 0 1 ) | (-1/7 -2/7 3/7 ) // ( 0 0 -7 ) | ( 1 2 -3 ) z tohto som to dostal po predeleni -7

( 1 -1 1) | ( 0 1 0 )

( 0 1 0 ) | ( 2/7 -3/7 1/7 )

finalny krok k 2. pripocitas 3., od 2. odpocitas 1. a usporiadas

(1 0 0 ) | ( 3/7 6/7 -2/7)

(0 1 0) | (2/7 -3/7 1/7 )

( 0 0 1) | (-1/7 -2/7 3/7)

takze tvoja inv(A) =

1/7 *

( 3 6 -2)

(2 -3 1 )

(-1 -2 3)

som tu 1/7 vyhodil pred maticu aby matica lepsie vyzerala. Tymto sposobom zratas lubovolnu inverznu k matici.

Java › Pacman - unit collision prob…
20. 1. 2013   #170399

a co takto v classe Pacman dat taku podmienku:

if ( pacman.colide() ){

// obmedz pohyb iba kam moze

}else{

//tvoj kod pre pohyb

}

OS - GNU / Linux › Jak zistit kde mam nainstalo…
10. 1. 2013   #170048

Ak myslis na take nieco ako grub, lilo atd... to sa nachadza v /boot

Java › zavolání metody
10. 1. 2013   #170047

Mas to dobre, ale to vygenerovanie float som myslel, tak ako si to mal ty, nic ine nebolo treba. Asi takto:

public static void main(String[] arg){
	float a, b, c;
	Scanner s = new Scanner();
	a = s.nextFloat(); // to iste ako nextInt() ale mozes tam dat desatinne cislo
	b = s.nextFloat();
	c = s.nextFloat();
	rovnice(a,b,c);
	System.out.println("x1="+x1+" x2="+x2);
}
Java › zavolání metody
9. 1. 2013   #170031

Jednoducho, ak pocitas kvadraticku rovnicu obcas dostanes 2 realne riesenia, ale ty inym metodam o nich nemaz ako povedat lebo java dokaza navratit premennu nanajvys jednu, to je dovod pouzitia pola, ale hovorim existuju aj ine cesty, ale tie zdaleka niesu bud tak jednoduche, alebo to vyzera hrozne (dost necitatelne). To je dovod preco pouzivam pole, navyse ja si mozem nastavit velkost toho pola podla premennych, atd... . Dalsia vec ak nastavis metodu na void nikdy ti nic nevrati, ak nenastavis na nu nejaku referenciu na uz vytvoreny class. V jave nieje nikdy viditelna ta cast ktora je v nejakom "subbloku" zvonka.

Tie podmienky funguju tak, ze ak mas 1 koren vytvori sa pole o velkosti 1 a to sa vrati a ja si uz pomocou premennej length zistim aku ma pole velkost. Ak nema korene vrati sa null, ale bolo by lepsie pole s 0 dlzkou ktore vytvoris new float[0];

Ale dobre napisem iny kod, s globalnymi premennymi:

class Rovnica{
	float x1, x2;

	public static void main(String arg[]){
		// vygeneruj si cisla ako predtym
		float a,b,c;
		//tu to spocitas a ulozis to globalnych premennych x1,x2
		rovnica(a,b,c); // inak ak pre javu je dolezity pocet a typ premennych
		// spolu s nazvom to tvori signaturu metody a podla nej java rozoznava o aku metodu ide
		// tu metodu co si volal ty vobec nepoznala preto ti to neslo
		// z tej metody si nic nevracal (void) preto ti to nic neulozilo do vysledok
		// A tu to uz len nejakym sposobom vypises
		System.out.println("x1="+x1+" x2="+x2);
	}
	
	// metoda zostava taka aku si mal, akurat s inymi argumentami a to budu koeficient
	public void rovnica(float a, float b, float c){
		// tu mas to co si mal aj pred tym
	}
}
Java › zavolání metody
9. 1. 2013   #170027

Nechapem preco napuzivas double alebo aspon float, kedze nie kazde riesenie kr je cele cislo. Ale teraz k problemu, ak poterbujes vysledky tak ich musis nejakym sposobom vratit a to sa da rozne, asi najednoducsie je to urobit takto:

public float[] solveQE(float a, float b, float c){
	float D = b*b - 4*a*c // ako to mas
	float[] res = null;;
	if(D > 0){
		res = new float[2];
		res[0] = (-b + Math.sqrt(D))/(2*a);
		res[1] = (-b - Math.sqrt(D))/(2*a);
	}
	else if(D==0){
		res = new float[1];
		res[0] = -b/2*a;
	}

	return res;
}

public static void main(String[] arg){
	float a,b,c;
	// tu vygeneruje a, b, c nejakym sposobom
	float res = solveQE(a,b,c);
	if(res==null){
		// mozes taktiez generovat pole s 0 dlzkou, je to uplne
		// jedno, ja som ho nechal null
		System.out.println("Kvadraticka rovnica pre dane koeficienty nema realne korene");
	}
	else if(res.length == 1){
		System.out.println("Rovnica ma len jeden koren");
		System.out.println("x = "+res[0]);
	}
	else{
		System.out.println("Rovnica ma 2 realne korene");
		System.out.println("x1 = "+res[0]+"\tx2 = "+res[1])
	}
}

Da sa to samozrejme aj inak, napr. ti metoda bude vracat pocet R korenov {0,1,2}. A uz vytvorene pole das ako jeden z argumentov.

bezmena
Matematika › Problém s postupnosťou
9. 1. 2013   #170023

co tak v tom prvom vyuzit vzorec (a^3 - b^3) = (a-b)*(a^2 + ab + b^2) . => a1(2-q)(4+2q+q^2)=7. A v druhom je a1(4+2q+q^2)=8. Vynasob 2) (2-q) a dostanes 7=8(a-q) a mas jeden koren pre q => uz to len redukujes na qvadraticku rovnicu, to co si napisal.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý