 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Bela01 Neznanec

Pridružen-a: Sre 11 Jun 2008 15:54 Prispevkov: 2 Aktiv.: 0.01
|
Objavljeno: Sre Jun 11, 2008 7:30 pm Naslov sporočila: [Java] Branje iz datoteke |
|
|
Sem bolj "zelena" pri programiranju, sploh pa pri javi.
Potrebovala bi pomoč pri enem programu.
Torej rada bi, da program iz datoteke prebere vrstico po vrstico in shrani to besedilo v določene spremenljivke (string). Sicer mi ne javi nobene napake ko skompajlam, vendar se applet noče zagnat. Je pa napaka v proceduri BeriIzDatoteke, ker če dam klicanje te datoteke v glavnem programu pod komentar, se applet zažene.
Torej v čem je sploh problem in ali je moja koda sploh logično nekak zapisana.
To je vsebina datoteke, ki jo želim prebrati:
"
1. Koliko meri kot v podanem trikotniku?
a) 30°
b) 60°
c) 40°
1
2. Kako imenujemo točko T?
a) Višinska točka
b) Težiščnica
c) Središče očrtanega kroga
2
3. Premici p in q sta vzporedni. Katera trditev velja?
a) kot a je enako velik kot kot b
b) kot a je enako velik kot kot d
c) kot a je enako velik kot kot c
3
"
To pa je koda programa:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
public class Naloga extends JApplet implements ItemListener, ActionListener {
String[] a;
String pres = " ";
//vprašanje
String[] n = new String[3];
//odgovori
String[][] o = new String[3][3];
//točke za pravilne odgovore
int[] tocke = new int[3];
//pravilni odgovor
int[] odg = new int[3];
//zaporedna številka naloge
int zap = 0;
//Labela s tekstom, nalogo in odgovorom
JLabel tekst = new JLabel("");
JLabel naloga = new JLabel("");
JLabel odgovor = new JLabel("");
private String Preveri_g = "Preveri_g";
private String Naprej_g = "Naprej_g";
//ustvarimo gumbe
JRadioButton[] rgumb = new JRadioButton[3];;
JButton preveri, naprej;
//spremenljivka za slikice
Toolkit tool = Toolkit.getDefaultToolkit();
Image slika = tool.getImage("naloga1.jpg");
//ustvarimo panelo, ki bo nosila ostale v sebi
JPanel namizje = new JPanel(new BorderLayout());
JPanel namizje1 = new JPanel(new BorderLayout());
JPanel namizje2 = new JPanel(new BorderLayout());
JPanel resitev = new JPanel(new BorderLayout());
//ostale panele
JPanel navodilo = new JPanel(new BorderLayout());
JPanel nosilna = new JPanel(new GridLayout());
JPanel odgovori = new JPanel(new GridLayout(3, 1));
JPanel primeri = new JPanel(new GridLayout());
JPanel gumbi = new JPanel(new GridLayout(1, 2));
JLabel izpis = new JLabel(" ");
//panele za applet
JPanel applet = new JPanel(new GridLayout(7,1));
JPanel naslov = new JPanel(new BorderLayout());
JPanel n_1 = new JPanel(new GridLayout(2,1));
JPanel n_2 = new JPanel(new GridLayout(2,1));
JPanel n_3 = new JPanel(new GridLayout(2,1));
JPanel nal1 = new JPanel(new GridLayout(2,2));
JPanel nal2 = new JPanel(new GridLayout(2,2));
JPanel nal3 = new JPanel(new GridLayout(2,2));
//labele za applet
JLabel nas = new JLabel("Rezultati reševanja");
JLabel tekst1 = new JLabel("Pravilen odgovor: ");
JLabel tekst2 = new JLabel("Dosežene točke: ");
public void ZgradiApplet()
{
Container app = this.getContentPane();
applet.setPreferredSize(new Dimension(500,500));
naslov.setPreferredSize(new Dimension(500,20));
n_1.setPreferredSize(new Dimension(500,60));
nal1.setPreferredSize(new Dimension(500,40));
n_2.setPreferredSize(new Dimension(500,60));
nal2.setPreferredSize(new Dimension(500,40));
n_3.setPreferredSize(new Dimension(500,60));
nal3.setPreferredSize(new Dimension(500,40));
naslov.add(nas);
nal1.add(tekst1);
nal1.add(new JLabel(o[0][0]));
nal1.add(tekst2);
nal1.add(new JLabel(String.valueOf(tocke[0])));
nal2.add(tekst1);
nal2.add(new JLabel(o[1][1]));
nal2.add(tekst2);
nal2.add(new JLabel(String.valueOf(tocke[1])));
nal3.add(tekst1);
nal3.add(new JLabel(o[2][2]));
nal3.add(tekst2);
nal3.add(new JLabel(String.valueOf(tocke[2])));
n_1.add(new JLabel(n[0]));
n_1.add(nal1);
n_2.add(new JLabel(n[1]));
n_2.add(nal2);
n_3.add(new JLabel(n[2]));
n_3.add(nal3);
applet.add(naslov);
applet.add(n_1);
applet.add(n_2);
applet.add(n_3);
app.add(applet);
}
//Panela z navodilom naloge
public JPanel NavodiloP(){
navodilo.setPreferredSize(new Dimension(350, 50));
navodilo.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(5, 0, 5, 0),
BorderFactory.createEtchedBorder()));
navodilo.add(new JLabel(pres), BorderLayout.WEST);
navodilo.add(naloga, BorderLayout.CENTER);
return navodilo;
}
//v grupo dodamo stikala oz. radiobuttone
void DodajStikala(){
//grupa, ki bo združila radiobutone - rgumbe, da bodo sodelovali med seboj
ButtonGroup grupa = new ButtonGroup();
//ustvarimo rgumbe z možnimi odgovori
for (int i = 0; i < 3; i++)
{
rgumb[i] = new JRadioButton(o[zap][i]);
if (i != odg[zap])
rgumb[i].setActionCommand("NE");
else
rgumb[i].setActionCommand("DA");
rgumb[i].addItemListener(this);
grupa.add(rgumb[i]);
}
}
//Panela ki vsebuje stikala
public JPanel OdgovoriP(){
DodajStikala();
odgovori.setPreferredSize(new Dimension(200, 250));
odgovori.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5),
BorderFactory.createTitledBorder(
LineBorder.createGrayLineBorder(),
"Možni odgovori")));
for (int i = 0; i < 3; i++)
{
odgovori.add(rgumb[i]);
}
return odgovori;
}
//Panela ki vsebuje slike
public JPanel PrimeriP(){
primeri.setPreferredSize(new Dimension(200, 250));
primeri.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5),
BorderFactory.createTitledBorder(
LineBorder.createGrayLineBorder(),
"Slika kot pomoč")));
Icon ikona = new ImageIcon(slika);
primeri.add(new JLabel(ikona));
return primeri;
}
//Panela ki vsebuje paneli odgovori in primeri
public JPanel NosilnaP(){
OdgovoriP();
PrimeriP();
nosilna.add(odgovori);
nosilna.add(primeri);
nosilna.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(5, 0, 5, 0),
BorderFactory.createEtchedBorder()));
return nosilna;
}
//panela ki vsebuje labelo s tekstom
public JPanel ResitevP(){
resitev.add(izpis);
resitev.setPreferredSize(new Dimension(350, 50));
resitev.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(1, 0, 1, 0),
BorderFactory.createEtchedBorder()));
resitev.add(new JLabel(pres), BorderLayout.WEST);
resitev.add(tekst, BorderLayout.CENTER);
return resitev;
}
//panela namizje1 vsebuje panele navodilo, nosilna in resitev
public JPanel Namizje1P(){
NavodiloP();
NosilnaP();
ResitevP();
namizje1.add(navodilo, BorderLayout.NORTH);
namizje1.add(nosilna, BorderLayout.CENTER);
namizje1.add(resitev, BorderLayout.SOUTH);
namizje1.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));
return namizje1;
}
//panela ki vsebuje gumba preveri in naprej
public JPanel GumbiP(){
gumbi.setPreferredSize(new Dimension(350, 50));
gumbi.setBorder(
new CompoundBorder(
BorderFactory.createEmptyBorder(1, 0, 1, 0),
BorderFactory.createEtchedBorder()));
//ustvarimo in vstavimo v labelo gumba preveri in naprej
preveri = new JButton("Preveri");
preveri.setActionCommand(Preveri_g);
preveri.addActionListener(this);
gumbi.add(preveri);
naprej = new JButton("Naprej");
naprej.setActionCommand(Naprej_g);
naprej.addActionListener(this);
gumbi.add(naprej);
return gumbi;
}
//panela ki vsebuje gumbe
public JPanel Namizje2P(){
GumbiP();
namizje2.add(gumbi, BorderLayout.SOUTH);
namizje2.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
return namizje2;
}
//glavno namizje ki vsebuje namizje1 in namizje2
public JPanel NamizjeP(){
Namizje1P();
Namizje2P();
namizje.add(namizje1, BorderLayout.NORTH);
namizje.add(namizje2, BorderLayout.CENTER);
return namizje;
}
public void BeriIzDatoteke()
{
int i = 0;
String vrstica = null;
try
{
BufferedReader datoteka = new BufferedReader(new FileReader("datoteka.txt"));
while (datoteka.ready()) {
while ((vrstica = datoteka.readLine()) != null) {
switch (i) {
case 0: { n[zap] = vrstica; //shrani vprašanje
break;
}
case 1: { o[zap][i] = vrstica; //shrani prvi odgovor
break;
}
case 2: { o[zap][i] = vrstica; //shrani drugi odgovor
break;
}
case 3: { o[zap][i] = vrstica; //shrani tretji odgovor
break;
}
case 4: { odg[i] = Integer.parseInt(vrstica); //shrani rešitev
break;
}
}
i++;
if (i == 5)
{
i = 0;
zap++;
}
}
}
datoteka.close();
}
catch(IOException e) //če datoteka, ki smo jo klicali za branje ne obstaja
{
//System.out.println("Datoteka ne obstaja!");
}
}
//glavni program okna
public void main(String[] args) {
//BeriIzDatoteke();
//oblikujemo applet
//ustvarimo okno
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Reševanje nalog");
Naloga app = new Naloga();
ZgradiApplet();
// uporabimo drsno površino v primeru premajhnega okna
JScrollPane pane = new JScrollPane(app.NamizjeP());
pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
frame.getContentPane().add(pane, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
//glavni program appleta
public void init() {
Container okno_App = this.getContentPane();
main(a);
}
//metoda, ki ugotavlja stanje stikal
public void itemStateChanged(ItemEvent event) {
tekst.setText("");
}
//metoda ki ugotovi stanje gumbov
public void actionPerformed(ActionEvent event) {
if (event.getActionCommand().equals(Preveri_g))
if (rgumb[odg[zap]].isSelected())
tekst.setText("Odgovor je pravilen!");
else
tekst.setText("Odgovor ni pravilen!");
if (event.getActionCommand().equals(Naprej_g))
if (zap < 3)
{
zap++;
naloga.setText(n[zap]);
}
else
{
zap = 0;
System.exit(0);
}
}
} |
|
Nazaj na vrh |
|
 |
Bela01 Neznanec

Pridružen-a: Sre 11 Jun 2008 15:54 Prispevkov: 2 Aktiv.: 0.01
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 9 dni
Powered by phpBB © 2001, 2005 phpBB Group
|