» »

Java problemček

Java problemček

demokedes ::

Pozdravljeni,
Pri programiranju v javi sem naletel na en droben probleček in prepričan sem, da mi boste pri njem zlahka pomagali.
Poglejte:
Kot input vpišem neko število, sktaerim bi rad še naprej delal, se pravi da more bit integer. Problem je v tem, ker java tisto kar dobi pretvori v char in potem s tem številom ne morem normalno delat naprej. lejte kor primer naj bo program, ki potem ko se zazene v tipkovnici vpisemo neko cifro. Zelimo pa, da nam program vrne dvojno vrednost. Jest sem tole spisal nekako takole:
import java.io.*;
public class Set3
{
public static void main(String[] args)
{
int izbira=0;
try {
izbira=System.in.read();

}
catch(IOException e) {
System.err.println("Error: "+e);
}
int dvojka=izbira*2;
System.out.println(dvojka);
}
}
In seveda program ne vrne prave vrednosti, ker se v spremenljivko izbira ne zapiše tista prava stevilka, ki sem jo vtipkal, pač pa cifa ki je rezervirana za tipko pod to številko al tko nekak. Torej, upam, da sem bil dost razumljiv, ter da mi boste znali pomagati in povedati kaj naj spremenim, da se bo v spremenljivko izbira zapisala točno tista številka, katero bom vnesel.

Že vnparej hvala....
Rok

DMouse ::

import java.io.*;
public class Set3
{
public static void main(String[] args)
{
int izbira=0;
try {
izbira = Integer.parseInt(System.in.read());

}
catch(IOException e) {
System.err.println("Error: "+e);
}
int dvojka=izbira*2;
System.out.println(dvojka);
}
}

Moram priznat, da se kej preveč v delovanje nisem poglabljal, vem le, da moraš število podano kot String najprej pretvorit v int z ukazom Integer.parseInt().

lp

demokedes ::

Hmtole ne gre skoz...
jav mi pa tole...
Set3.java:10: cannot resolve symbol

symbol : method parseInt (int)

location: class java.lang.Integer

izbira1=Integer.parseInt(izbira);

^

1 error


Kaj spremenit?
Sej neki sem probavu, sam kej dobrga pa ne najde....

kopernik ::

Če se le da, uporabljaj BufferedReader, ker je hitrejši in bolj varen.
Tista metoda in.read() ti pa vrne naslednji byte na vhodu (torej int med 0 in 255).
Če bi hotel tisto uporabljati bi moral uporabiti while zanko in testirati za newline ('\n').
Ok, rešitev je naslednja:


import java.io.*;

public class Set3 {
public static void main(String[] args) {
int izbira = 0;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
izbira = Integer.parseInt(in.readLine().trim());
} catch (IOException e) {
System.err.println("Error: " + e);
}
System.out.println(izbira * 2);
}
}

lp

P.S. admini - zakaj dobivam naslednjo napako pri uporabi html-ja:
To sporočilo vsebuje nedovoljene HTML oznake ali je nepravilno gnezdeno.
?

Zgodovina sprememb…

  • spremenil: kopernik ()

demokedes ::

Ej najlepša hvala...to pa zdej dela tko kot sem hotu...

OwcA ::

@jankoFer:
P.S. admini - zakaj dobivam naslednjo napako pri uporabi html-ja:
To sporočilo vsebuje nedovoljene HTML oznake ali je nepravilno gnezdeno.
Zato, ker jih ;) Dovoljeni so le tagi, kot jih predvideva XHTML 1.1 (vkljucno z pravili glede gnezdenja in vrednosti atributov). Če uporabljaš znak <, ki mu sledi "ne presledkast" (non-whitespace) znak, ga bo parser prepoznal kot začetek taga.
Otroška radovednost - gonilo napredka.

kopernik ::

Owca:
veliko delam html strani in vem kaj je pravilna uporaba tagov.
Tle sem uporabil le in samo tag <pre>, da bi se mi koda lepo
poravnala.

OwcA ::

jankoFer: <pre> smo pozabili dodati na seznam dovoljenih tagov. Bomo v kratkem. Za vse nevšečnosti se opravičujemo.
Otroška radovednost - gonilo napredka.

demokedes ::

Pozdravljeni,
Zopet se jaz oglašam z problemom v javi.
Tokrat uporabljam RandomAccesFile.
Torej gre zato, da se zapisuje v datoteko.
Recimo jaz bi rad, nek določen strin zapisal v datoteko, vendar imam en oviro. rad bi zapisoval v novo vrstico. pravaprav bo ta funkcija dodajala stringe. Problem se pojavi, ker če jest dodam ta string, mi ga dodda za zadnjo besed, jaz bi ga pa rad v novo vrstico. Moja koda zgleda takole..

RandomAccessFile file;
try {
file=new RandomAccessFile("slovar.txt","rw");
file.seek(file.length()); //tu mi postavi na konec fajla,torej za zadnjo besedo
file.writeBytes("kar hocem vpisati"); //vpise mi tisto kar zelim
//jest bi rad da mi kazalec postavi ne cist na konec, ampak v novo vrstico
file.close();
}
catch(Exception e) {
System.err.println("Exception: "+e.getMessage());
}

Ce ima kdo kakršnoliko idejo, kako bi ta problem rešil, bom zelo vesel.
Že vnaprej se za kakršnokoli pomoč najlepše zahvaljujem, ter vas lepo pozdravljam.

Rok

kockish ::

Resitev 1. :
file.writeBytes("\nkar hocem vpisati");
pomoje deluje.

Resitev 2. :
public static void dodajVnos() {
String vnos = "karkoli";

try {
BufferedWriter writeFile=new BufferedWriter(new FileWriter("imenik.dat", true)); //true pomeni da appendas
writeFile.newLine(); //gre v novo vrstico
writeFile.write(vnos);

writeFile.close();
}
catch (Exception e) {
System.out.println("Error: "+e);
}
}

demokedes ::

Pozdravljeni,
Mene pa zanima še ena drobna malenkost in sicer tole. Recimo, da napisem en program v javi in ga skopajlam in vse dela kot mora. No pomemben podatek je to, da vse to naredim na windowsih.
Potem pa fajl neki.java prenesem na en računalnik, ki ima naložen linux, na linuxu pa seveda tud javo. In zdej me zanima če je kakšna varianta da zadeve nebi skopajlalo, ker pri c-ju se to dogaja, ampak tam se dogaja ker so različni prevajlaniki, zdej tuki pa pri javi mislim,d a je samo ta sun-ov prevajalnik in zdej me zanima če neki nardim na wondowsih bi potemtakem moralo delat tud na linuxu.
ž
Za odgovor se vam že vnaprej zahvaljujem, ter vas lepo pozdravljam.

Rok

Imortales ::

V glavnem bi moralo delat. Seveda pa moraš kodo na drugem računalniku na novo skompajlat.
To sporočilo se bo samo uničilo čez 5 sekund.

kopernik ::

Verzija Jave na mašini, na katero boš nesel to stvar
kompajlat mora biti enaka ali višja verziji na tvoji mašini doma.
Tako bo stvar garantirano delovala.
Načeloma pa lahko skompajlaš svoj *.java file na kateremkoli
JDK-ju (no vsaj od 1.2 naprej), če ne uporabljaš kakih novih
zadev (torej class-ov, ki so jih uvedli pri kasnejših verzijah).

lp

noraguta ::

popravek imortales. zadeve ni treba rekomppajlat, gvlavno da imas kakor je rekel jankofer zadosti novo JVM. in vse librarije.

Imortales ::

Hja, zadeva naj bi delala brez rekompajlanja, samo po mojih izkušnjah to ni vedno res.
To sporočilo se bo samo uničilo čez 5 sekund.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java Objekti

Oddelek: Programiranje
102263 (1957) Mavrik
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223183 (3183) morbo
»

[NALOGA][Java] Branje vsebine datoteke vzvratno

Oddelek: Programiranje
71618 (1560) SkIDiver
»

[Delphi] client server

Oddelek: Programiranje
61277 (1136) jvolk
»

Kako pošiljanje datotek v JAVI.

Oddelek: Programiranje
141844 (1715) kopernik

Več podobnih tem