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

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

 

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

George
Java › Příkazová řádka
12. 12. 2012   #168735

a zakomentoval si package jak v tvoji praci, tak v DrawingToolu?

George
Java › Příkazová řádka
12. 12. 2012   #168686

Cau, delam tu samou praci. Mas urcite naimportovanej drawingtool.jar .. to je prave spatne musis si stahnout drawingtool.java nekde na courseware.. nekde to tam je. Hodis si to do toho samyho package a pak uz by to melo fungovat i pres prikazovou radku

George
Java › Scanner a vyjimka
12. 12. 2012   #168685

jeste doplnim, ze 92 radek uvedeny v chybe je v metode zapsaniDoPole ( cisla[iterace] = sca.nextInt(); )

George
Java › Scanner a vyjimka
12. 12. 2012   #168684

Zdravim, za hodinu odevzdavam semestralni praci.. nevim jak ej to mozne, ale predevcirem po doprogramovani mi vse chodilo.. dnes to chci spustit a ujistit se a hle - nefunguje a vubec netusim proc (resp. tusim, ale nejsem sto najit spravne reseni)

Mam program ktery mi ma cist cisla po radcich ze souboru "vstup.txt", vypocitavat z nich posloupnost a tuto posloupnost zapsat do souboru "vystup.txt" - toto cele jen pokud je na prikazove radce uveden parametr vstup. txt (tzn. java mujprogram vstup.txt) , ale hazi mi to tohle

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at ukoly2012.babica.zapsaniDoPole(babica.java:92)
at ukoly2012.babica.main(babica.java:423)

problem bude ve scanneru, ze ho tam ma dvakrat.. ale jak to mohu predelat tak, aby mi tohle nevyhazovalo

pokud parametr na prikaz.radce zadan neni, program si vyzada vstupni hodnotu z klavesnice, to funguje uplne skvele, ale s tim parametrem ne a ne to spustit i kdyz mi to fungovalo jeste predevcirem. Hodim sem cely kod, diky za pripadnou radu

package ukoly2012;
/**
 * Program generuje pseudonahodnou posloupnost podle zadaneho algoritmu, pote posloupnost seradi.
 *  Zadani startovaci hodnoty bud z klavesnice a vystup do console + vizualizuje posl. v DrawingTool.
 *  Pokud existuje soubor "vstup.txt", tak je vstup presmerovan na tento soubor, ktery obsahuje
 * dvouciferna cisla po radcich
 */
import java.util.*;
import java.io.*;
//import ppa1.*;
import java.awt.*;
/**
 * @author Miroslav Svetly
 *
 */
public class babica {
	
	public static final int vyska = 420; //vyska platna
	public static final String jmeno = "vstup.txt"; //jmeno vstupniho souboru
	//static private Scanner sc = new Scanner(System.in);
	//static private FileReader fr = new FileReader(jmeno);
	//static private Scanner sca = new Scanner(fr);
	
	/**
	 * Zkouma, jestli soubor "vstup.txt" existuje.
	 * Pokud existuje, metoda main presmeruje vstup na vstupni soubor.
	 * Pokud neexistuje, metoda main presmeruje vstup na rucni zadani start.hodnoty.
	 * @return boolean false nebo true
	 */
public static boolean rozhodniSe() {
		
		boolean klavesnice = true;
		try {
			File f = new File(jmeno);
			if (f.exists()) {
				
				klavesnice = false;
			}
			else {
				
				klavesnice = true;
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return klavesnice;
}
	/**
	 * smaze soubor "vystup.txt"
	 * @throws IOException
	 */
	public static void smazVystup() throws IOException {
		
		File f = new File("vystup.txt"); //smazani souboru "vystup.txt"
		RandomAccessFile raf = new RandomAccessFile(f, "rw");

		raf.setLength(0);

		raf.close();
	}
	
	/**
	 * v pripade vstupu z klavesnice nacte startovaci hodnotu zadanou uzivatelem
	 * @param a
	 * @return startovaci hodnotu zadanou uzivatelem
	 */
		public static int scanner(int a) {
		
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println("Zadej startovaci hodnotu: ");
		a = sc.nextInt(); 
		
		return a;
		
	}
		
		public static int[] zapsaniDoPole() throws IOException {
			int [] cisla = new int[40];
			int [] kopie = null; //kopie pole "cisla"
			int iterace = -1; 
			FileReader fr = new FileReader(jmeno);
			Scanner sca = new Scanner(fr);
			
			
			while(sca.hasNextLine()) { //zapisuje vstupni hodnoty ze souboru do pole
				iterace++;
				kopie = new int[iterace + 1];
				
				cisla[iterace] = sca.nextInt();
				
				
				System.arraycopy(cisla, 0, kopie, 0, iterace + 1 );
			}
			return kopie;
		}
	
	/**
	 * Metoda cte hodnoty ze souboru "vstup.txt" a postupne je uklada do pole.
	 * Pote se pro jednotlive prvky pole vypocitava posloupnost podle zadaneho algoritmu.
	 * Tato posloupnost se uklada do pole.
	 * Overuje jestli ve vygenerovanem poli jiz neni stejna hodnota. 
	 * Po nalezeni shodneho cisla metoda cte dalsi cislo z pole vstupnich hodnot.
	 * Po posledni vstupni hodnote a nalezeni shodneho cisla metoda konci.
	 * @return pole posloupnosti
	 * @throws IOException
	 */	
	public static int [] vygenerujZeSouboru(int [] kopie) throws IOException {
		kopie = zapsaniDoPole();
		/*
		int [] cisla = new int[40];
		int [] kopie = null; //kopie pole "cisla"
		int iterace = -1; 
		FileReader fr = new FileReader(jmeno);
		Scanner sca = new Scanner(fr);
		
		
		while(sca.hasNextLine()) { //zapisuje vstupni hodnoty ze souboru do pole
			iterace++;
			kopie = new int[iterace + 1];
			
			cisla[iterace] = sca.nextInt();
			
			
			System.arraycopy(cisla, 0, kopie, 0, iterace + 1 );
		}		*/
		
		int [] pole = null;
		int [] pole2 = new int [40];
		
				
		for(int g = 0; g < kopie.length; g++) {
			pole = null;
			pole2 = new int [40];
			boolean shoda = false; //shodnost prvku pole v posloupnosti
			
			int prubezne; // prubezne kvuli poli
			double vysledek; 
			int vysledek2; //pretypovani "vysledek" zpet na int
			
			pole2[0] = kopie[g]; //nulty prvek vzdy vstupnim cislem
			for (int i = 0; shoda != true; i++ ) {
			
				pole = new int[i + 1];
				if (i == 0) {
				
			
					vysledek = Math.pow(kopie[g], 2);
					if (vysledek >= 1000) {
						vysledek = Math.floor(vysledek / 100);
						}
					else {
						vysledek = Math.floor(vysledek / 10);
				
						}
				vysledek2 = (int) vysledek + 1;
			
			
				pole2[i + 1] = vysledek2;
				
				System.arraycopy(pole2, 0, pole, 0, 1 );
				
			}
			
			else  {
				prubezne = pole2[i];
				
				
				vysledek = Math.pow(prubezne, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
				}
				else {
					vysledek = Math.floor(vysledek / 10);
					
				}
				vysledek2 = (int) vysledek + 1;
			}
			if (i > 0) {
				
				for (int index=0; index<pole2.length; index++){
										
					if (vysledek2 == pole2[index]){ //overuje zdali prvek jiz v posloupnosti neni obsazen
					shoda = true;
					System.arraycopy(pole2, 0, pole, 0, i + 1);
					break;
					}
										
			}
			
				if (shoda == false) { 
				pole2[i + 1] = vysledek2;
				System.arraycopy(pole2, 0, pole, 0, i + 1);
				}
			}
									
		}
			
			
			
			
			seradPosloupnost(pole);
			
		}
	
		
		
		return pole;
		
		
	}
	
	/**
	 * Metoda generuje posloupnosti podle zadaneho cisla z klavesnice.
	 * Udela z nej posloupnost podle zadaneho algoritmu a ulozi ji do pole.
	 * Overuje jestli ve vygenerovanem poli jiz neni stejna hodnota. 
	 * Po nalezeni shodneho cisla metoda konci.
	 * @return pole posloupnosti
	 */
		public static int [] vygenerujPosloupnost() {
		int a = 0;
		int startovaci = 0; // startovaci hodnota
		startovaci = scanner(a);
		
		int [] pole = null;
		int [] pole2 = new int [40];
		
		
		int prubezne; // prubezne kvuli poli
		double vysledek;
		int vysledek2;
		boolean shoda = false;
		
		pole2[0] = startovaci; //nulty prvek pole vzdy startovaci hodnota
		for (int i = 0; shoda != true; i++ ) {
			
			pole = new int[i + 1];
			if (i == 0) {
				
			
				vysledek = Math.pow(startovaci, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
					}
				else {
					vysledek = Math.floor(vysledek / 10);
				
					}
				vysledek2 = (int) vysledek + 1;
			
			
				pole2[i + 1] = vysledek2;
				
				System.arraycopy(pole2, 0, pole, 0, 1 );
				
			}
			
			else  {
				prubezne = pole2[i];
				
				
				vysledek = Math.pow(prubezne, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
				}
				else {
					vysledek = Math.floor(vysledek / 10);
					
				}
				vysledek2 = (int) vysledek + 1;
			}
			if (i > 0) {
				
				for (int index=0; index<pole2.length; index++){ //overuje zdali prvek jiz v posloupnosti neni obsazen
										
					if (vysledek2 == pole2[index]){
					shoda = true;
					System.arraycopy(pole2, 0, pole, 0, i + 1);
					break;
					}
										
			}
			
				if (shoda == false) {
				pole2[i + 1] = vysledek2;
				System.arraycopy(pole2, 0, pole, 0, i + 1);
				}
			}
									
		}
		
		
		return pole;
		
		
	}
	/**
	 * Pole posloupnosti tato metoda seradi pomoci algoritmu InsertSort.
	 * Pokud je zadavana hodnota z klavesnice, pak tyto pole zobrazi do console.
	 * Pokud jsou hodnoty cteny ze souboru, pak tyto pole zapise do souboru "vystup.txt".
	 * @param pole neserazene pole
	 * @return neserazene pole
	 * @throws IOException
	 */
	
	public static int[] seradPosloupnost(int []pole) throws IOException {
		int[] neserazene = new int[pole.length]; 
		System.arraycopy(pole, 0, neserazene, 0, pole.length);
		
		
		
		boolean ptej = rozhodniSe(); //presmerovani vstupu
		
		
		
		for (int i=0; i<pole.length; i++) { //seradi pole posloupnosti
			int tmp = pole[i];
			int j = i;
			while((j>0) && (pole[j-1] > tmp)) {
			pole[j]=pole[j-1];
			j--;
			}
			pole[j]=tmp;
			
		}
		
	
		
		if(ptej == false) { //pokud ze souboru
	
		try {
			
			PrintWriter vystup = new PrintWriter(new FileWriter("vystup.txt", true));
			vystup.println(pole.length + Arrays.toString(neserazene));
			vystup.println(pole.length + Arrays.toString(pole));
			vystup.println();
			vystup.close();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		}
		
		
		return neserazene;
	}
	
	/**
	 * Procedura vizualizace posloupnosti v pripade zadani hodnoty klavesnice.
	 * Vypsani poli do console
	 * @param pole serazene pole
	 * @param neserazene neserazene pole
	 * @param vyska vyska vykreslovaneho platna
	 */	
	public static void grafPosloup(int [] pole, int [] neserazene, int vyska) {
		System.out.println(pole.length + Arrays.toString(neserazene));
		System.out.println(pole.length + Arrays.toString(pole));
		int sirka = 0;
		if(pole.length > 5) { //sirka platna
		sirka = (pole.length- 1)*(24) + 4;
		}
		else {
			sirka = 120; //kvuli minimalni siri platna 100px
		}
		DrawingTool dt = new DrawingTool(sirka, 420, Color.gray);
		
		int temp = -23;
		for(int i = 0; i < neserazene.length; i++) { //vykresleni neserazeneho pole
			
			temp += 23;
			
			for(int j = 0; j <= 20; j++) {
				dt.line(temp + (j + 2),vyska,(temp) + (j + 2), vyska - 2* (neserazene[i]));
				
			}
			
		}
		int temp2 = -23;
		for(int i = 0; i < pole.length; i++) { //vykresleni serazeneho pole
			
			temp2 += 23;
			
			for(int j = 0; j <= 20; j++) {
				dt.line(temp2 + (j + 2),200,(temp2) + (j + 2), 200 - 2* (pole[i]));
				
			}
			
		}
		
		int nasobek = (vyska -20) / 20;
		
		for (int i = 20; i > 0; i--) { //deleni osy Y carami
			dt.setColor(Color.red);
			if (i != 10) {
			dt.line(0, nasobek * i, sirka, nasobek * i);
			}
			else if (i == 10) {
				dt.setColor(Color.green);
				dt.line(0, nasobek * i, sirka, nasobek * i);
				dt.line(0, (nasobek * i) + 1, sirka, (nasobek * i) + 1);
			}
			if (i == 11) {
				dt.setColor(Color.blue);
				dt.line(0, nasobek * i, sirka, nasobek * i);
				//dt.line(0, (nasobek * i) + 1, sirka, (nasobek * i) + 1);
			}
			
		}
		
	}

	/**
	 * Rozhoduje o presmerovani vstupu.
	 * Vola metody, proceduru.
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		

		
		
		
		if (args.length == 0) //pokud vstup z klavesnice
		{
		int[] pole = vygenerujPosloupnost();
		int[] neserazene = seradPosloupnost(pole);

		
		grafPosloup(pole, neserazene, vyska);
		}
		
		else if(args.length != 0){ //pokud zadan parametr
			smazVystup();
			int[] kopie = zapsaniDoPole();
			vygenerujZeSouboru(kopie);
			
			
			
		} 
		
	}

}


George
Java › výstup do souboru
9. 12. 2012   #168493

#5 zlz
jezis nojo :) to jsem uplne prehlidnul, proto mi to nefungovalo. Diky moc

George
Java › výstup do souboru
9. 12. 2012   #168488

#3 KIIV
Ja ho tam mam

PrintWriter vystup = new PrintWriter(new FileWriter("vystup.txt"), true);
George
Java › výstup do souboru
9. 12. 2012   #168480

#1 George
oprava "potřebuji zapisovat již pod zapsaná data" ne soubory

George
Java › výstup do souboru
9. 12. 2012   #168479

Ahoj. Mam tu problém. Potřebuji vypisovat dvě pole do souboru pod sebe s naslednym odřádkováním a poté se to opakuje a já potřebuji zapisovat již pod zapsané soubory, tzn. nechci, aby se mi to přepisovalo, což se mi právě stává (i s tím druhým parametrem u FileWriteru true) a už nevim, jak to udělat. Díky moc za případnou radu. Tady kód 

try {
			
			PrintWriter vystup = new PrintWriter(new 		FileWriter("vystup.txt"), true);
			vystup.println(pole.length + Arrays.toString(neserazene));
			vystup.println(pole.length + Arrays.toString(pole));
			vystup.println();
			vystup.close();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
Zbiro
Java › Metody, parametry
8. 12. 2012   #168366

#5 sakal91
Super.. jak je vidno, tak jsem absolutne nepochopil parametry metod a jejich predavani. Uz mi to jede, dekuju moc, klobouk dolu :) Moc jsi mi pomohl

Zbiro
Java › Metody, parametry
8. 12. 2012   #168360

#3 sakal91
Nejde mi to.. asi spatne chapu metody i kdyz jsem o nich precetl docela dost.. hodi mse svuj celej zdrojak, mohl bys me prosimte nejak poposunout, abych do te metody "grafPosloup" dostal neserazene i serazene pole, abych to mohl vykreslit? A prdem se omlouvam za tu prasarnu sesmolenou v metode "vygenerujPosloupnost" :))

package ukoly2012;
import java.util.*;
import ppa1.DrawingTool;
import java.awt.Color;

public class Ppa1_SP_A12B0522P {
	
	private static final int sirka = 400;
	private static final int vyska = 420;
	
	static int scanner(int a) {
		Scanner sc = new Scanner(System.in);
		System.out.println("Zadej startovaci hodnotu: ");
		a = sc.nextInt();
		
		return a;
		
	}
	
	static int [] vygenerujPosloupnost(int []pole) {
		int a = 0;
		int startovaci = 0;
		startovaci = scanner(a);
		
		int [] pole2 = new int [40];
		
		
		int prubezne; // prubezne kvuli poli
		double vysledek;
		int vysledek2;
		boolean shoda = false;
		
		pole2[0] = startovaci;
		for (int i = 0; shoda != true; i++ ) {
			
			pole = new int[i + 1];
			if (i == 0) {
				
			
				vysledek = Math.pow(startovaci, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
					}
				else {
					vysledek = Math.floor(vysledek / 10);
				
					}
				vysledek2 = (int) vysledek + 1;
			
			
				pole2[i + 1] = vysledek2;
				
				System.arraycopy(pole2, 0, pole, 0, 1 );
				//prubezne = pole[i];
			}
			
			else  {
				prubezne = pole2[i];
				
				
				vysledek = Math.pow(prubezne, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
				}
				else {
					vysledek = Math.floor(vysledek / 10);
					
				}
				vysledek2 = (int) vysledek + 1;
			}
			if (i > 0) {
				
				for (int index=0; index<pole2.length; index++){
										
					if (vysledek2 == pole2[index]){
					shoda = true;
					System.arraycopy(pole2, 0, pole, 0, i + 1);
					break;
					}
										
			}
			
				if (shoda == false) {
				pole2[i + 1] = vysledek2;
				System.arraycopy(pole2, 0, pole, 0, i + 1);
				}
			}
									
		}
		
		
		return pole;
		
		
	}
	
	public static int[] seradPosloupnost(int []pole) {
		pole = vygenerujPosloupnost(pole);
		int velikost = pole.length;
		
		
		System.out.println(velikost + Arrays.toString(pole));
		
		for (int i=0; i<pole.length; i++) {
			int tmp = pole[i];
			int j = i;
			while((j>0) && (pole[j-1] > tmp)) {
			pole[j]=pole[j-1];
			j--;
			}
			pole[j]=tmp;
			//System.out.println(Arrays.toString(pole));
		}
		
		
		return pole;
	}
	
	private static void grafPosloup(DrawingTool dt, int sirka, int vyska) {
		
		int [] serazenepole = null;
		serazenepole = seradPosloupnost(serazenepole);
		int [] puvodnipole = null;
		puvodnipole = vygenerujPosloupnost(puvodnipole);
		
		
		
		//vyska = 420;
		//sirka = 400;
		
		for(int i = 0; i < puvodnipole.length; i++) {
			dt.line(5, 420, 5, 420 - puvodnipole[i]);
			
		}
		
		
	}

	
	public static void main(String[] args) {
		
		
		DrawingTool dt = new DrawingTool(400, 420);
		int [] policko = null;
		grafPosloup(dt, sirka, vyska);
		
	}

}
Zbiro
Java › Metody, parametry
7. 12. 2012   #168339

Zdravim. Mam tu malej problem s metodama a jejich volanim.. programuji semestralni praci (jsem zacatecnik) a mam zatim program.. myslim, ze nepotrebuje presne do detailu popisovat co presne dela.. jen tu nastinim problem, ktery mi vznika

mam metodu "nactiCislo", ktera mi nacita cislo z klavesnice pomoci scanneru, to se ulozi do promenne "a" a tuto hodnotu i vraci, pote metoda "generujPole" mi to nactene cislo umocni, vydeli, pricte jednicku, dokud se hodnota neopakuje, tak to generuje dalsi cisla (to je vcelku jedno) - vznikne mi tak pole o x prvcich (cislech) a toto pole vracim. Dale mam za ukol toto pole seradit vzestupne, cili mam metodu "seradPole" a do ni volam prave navratovou hodnotu z "generujPole", tedy to vygenerovane pole, pole se mi pekne seradi a ja vracim serazene pole a dale potrebuji vizualizovat graf tohoto pole (posloupnosti cisel v nem obsazene), dalsi metoda tedy "udelejGraf" a zde nastava problem.. musim vizualizovat nejprve pole neserazene a pote i pole serazene - na coz tedy potrebuju obe pole, takze si na ne referuji - tedy odkáži se na serazene pole, vse OK.. nojo, ale ja potrebuji pracovat i s tim neserazenym polem a kdyz si na nej dam referenci, tak to po me chce opet zadat hodnotu z klavesnice (opet metoda "nactiCislo") a to ja uz nechci, protoze uz jsem zadaval.. zkratka na to nemuzu prijit jak rozhazet ty reference, zda se mi to neresitelny. :/ Vedel by prosim nekdo, co se s tim da delat? Dekuju

 

 

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