Pereiti prie turinio

Java programa, reikia pagalbos


Rekomenduojami pranešimai

Jei galite, padėkite surasti kur čia kažkas negerai? Nusprendžiau ką nors padaryt naudojant GUI. Žodžiu programą paleidžiant, turi parodyti klausimą ir keturis atsakymo variantus. Paspaudus teisingą, tęsiamas žaidimas, rodomas kitas klausimas. Jei neteisingai - programa išsijungia. Bet abiem atvejais pas mane išsijungia.

pagrindine klase:

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class plm {


public static void main(String[] args) throws FileNotFoundException {

	File f = new File("questions.txt");
	Scanner s = new Scanner(f);
	antra a = new antra(s);
	boolean still = a.still();
	while(still){
		antra a1 = new antra(s);
		still = a.still();
	}

}


}

antra klasė:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.*;


public class antra extends JFrame {
//Variables
private JPanel answers;
private JPanel questions;
private JButton b;
private JButton b2;
private JButton b3;
private JButton b4;
private JLabel question;
private Scanner s1;
private File f1;
private int correct;
private boolean still;


   public antra(Scanner s) {
   	//Adding title to our window
   	super("žaidimas");


   	s1 = s;

   	//Storing question and answers. Also correct number
   	String quest = getQuestion(s1);
   	String answer1 = getAnswer1(s1);
   	String answer2 = getAnswer1(s1);
   	String answer3 = getAnswer1(s1);
   	String answer4 = getAnswer1(s1);
   	 correct = getCorrect(s1);

   	//Creating Panels and buttons
   	answers = new JPanel();
   	questions = new JPanel();
   	question = new JLabel(quest);

   	button1 bt1 = new button1();
   	button2 bt2 = new button2();
   	button3 bt3 = new button3();
   	button4 bt4 = new button4();

   	//Adding buttons and actionListeners for them
   	b = new JButton(answer1);
   	b.addActionListener(bt1);


   	b2 = new JButton(answer2);
   	b2.addActionListener(bt2);

   	b3 = new JButton(answer3);
   	b3.addActionListener(bt3);

   	b4 = new JButton(answer4);
   	b4.addActionListener(bt4);


   	//Adding everything to the screen
   	questions.add(question);
   	answers.add(b);
   	answers.add(b2);
   	answers.add(b3);
   	answers.add(b4);



   	add(BorderLayout.NORTH, questions);
   	add(BorderLayout.CENTER, answers);
   	setSize(400,400);
   	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	setVisible(true);


   }
   //Getting all information
   public String getQuestion(Scanner s){
   	String question = "";
   	while(s.hasNext() && !question.contains("?")){
   		question += s.next()+" ";
   	}

   	return question;
   }
  public String getAnswer1(Scanner s){
   String ans1 = "";
   ans1 = s.next();
   return ans1;
  }
  public String getAnswer2(Scanner s){
   String ans1 = "";
   ans1 = s.next();
   return ans1;
  }
  public String getAnswer3(Scanner s){
   String ans1 = "";
   ans1 = s.next();
   return ans1;
  }
  public String getAnswer4(Scanner s){
   String ans1 = "";
   ans1 = s.next();
   return ans1;
  }
  public int getCorrect(Scanner s){
   int correct = s.nextInt();
   return correct;
  }

  //ActionListener classes
  private class button1 extends JFrame implements ActionListener{
	 public void actionPerformed(ActionEvent event){
		 int button1 = 1;
		 JLabel l;
		 if(button1 == correct){
			  l = new JLabel("Jūsų atsakymas teisingas!");
			  still = true;
			  still();
		 }else{
			  l = new JLabel("Deja, jūsų atsakymas neteisingas");
			  still = false;
		 }
			 add(l);
			 setSize(150,150);
			 setVisible(true);
			 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		 }
	 }
  private class button2 extends JFrame implements ActionListener{
	 public void actionPerformed(ActionEvent event){
		 int button1 = 2;
		 JLabel l;
		 if(button1 == correct){
			  l = new JLabel("Jūsų atsakymas teisingas!");
			  still = true;
			  still();
		 }else{
			  l = new JLabel("Deja, jūsų atsakymas neteisingas");
			  still = false;
		 }
			 add(l);
			 setSize(150,150);
			 setVisible(true);
			 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		 }
	 }
  private class button3 extends JFrame implements ActionListener{
	 public void actionPerformed(ActionEvent event){
		 int button1 = 3;
		 JLabel l;
		 if(button1 == correct){
			  l = new JLabel("Jūsų atsakymas teisingas!");
			  still = true;
			  still();
		 }else{
			  l = new JLabel("Deja, jūsų atsakymas neteisingas");
			  still = false;
		 }
			 add(l);
			 setSize(150,150);
			 setVisible(true);
			 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		 }
	 }
  private class button4 extends JFrame implements ActionListener{
	 public void actionPerformed(ActionEvent event){
		 int button1 = 4;
		 JLabel l;
		 if(button1 == correct){
			  l = new JLabel("Jūsų atsakymas teisingas!");
			  still = true;
			  still();
		 }else{
			  l = new JLabel("Deja, jūsų atsakymas neteisingas");
			  still = false;
		 }
			 add(l);
			 setSize(150,150);
			 setVisible(true);
			 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		 }
	 }
  public boolean still(){
   return still;
  }


}

Klausimai pas mane yra surašyti į failą. Tokiu principu.

Koks mano vardas ? Tomas Alanas Jurijus Gytis 1
Kiek man metu? keturi penkeri seseri septyneri 3

Klausimas - variantai - teisingo atsakymo numeris.

 

Sudėjau komentarus, kad būtų lengviau orientuotis. Čia kaip suprantu yra loginė klaida kažkur.

Redagavo dudeperfect
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Siulau pradziai issiaiskint kokia yra "correct" reiksme programos vykdymo metu.

 

Tam panaudojant Debugeri, o jei tokio neturi, tai pvz ismetant lentele arba irasant reiksme i koki control'a.

 

Gal galima plačiau, nesu patyręs, išvis savamokslis naujokas. O correct reikšmę gaunama iš failo. Jeigu teisingai klausimą supratau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal galima plačiau, nesu patyręs, išvis savamokslis naujokas. O correct reikšmę gaunama iš failo. Jeigu teisingai klausimą supratau.

 

Tai kad ji is failo gaunama, tai aisku. Klausimas - ka is tiesu programa perskaito. Gal isvis tas correct visada yra 0... Tai vat kode po correct nuskaitymo idek koki nors isvedima, kad tau ta reiskme parodytu. Nes kaip suprantu debugerio nenaudoji..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai kad ji is failo gaunama, tai aisku. Klausimas - ka is tiesu programa perskaito. Gal isvis tas correct visada yra 0... Tai vat kode po correct nuskaitymo idek koki nors isvedima, kad tau ta reiskme parodytu. Nes kaip suprantu debugerio nenaudoji..

0 niekada negali būti, nes pats rašau tą failą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

:) ir kodel tu toks tikras, kad programa nuskaito butent tai, ka tu rasai i faila?

Nes man veikia, rodo kada teisingai kada ne, bet problema ta, kad kad ir koks variantas man vis vien išjungus tą papildomą JFrame langą, pranešantį teisingai ar ne, išsijungia ir visa programa.

Antroje nuotraukoje išjungus langą, išsijungia viskas.

post-29344-0-12120600-1336305077_thumb.jpg

post-29344-0-93596400-1336305083_thumb.jpg

Nuoroda į pranešimą
Dalintis kituose puslapiuose

aš taip pat turiu klausimėlį negaliu normaliai dirbt kompe nes nė velnio neviekia nei per eclipse nei per netbeans, rašo kad nėr main klasės nors klasėj veikia puikiai, tai vat net negaliu patikrint ar threads veikia ir ar jos išvis ką daro, ir exeptionas nieko visai, vat, anyone?

package kmiskaiciuoklis;

 

import java.awt.BorderLayout;

import javax.swing.JFrame;

//kmiGUI.java turinys

import java.awt.FlowLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JButton;

import javax.swing.JTextField;

import javax.swing.JOptionPane;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

 

 

interface Interfeisas {

public JLabel item1 = null;

public JLabel item2 = null;

public JTextField mase = null;

public JTextField ugis = null;

public JButton mygtukas = null;

}

 

public class Main extends JFrame implements Interfeisas {

 

private JLabel item1;

private JLabel item2;

private JTextField mase;

private JTextField ugis;

private JButton mygtukas;

 

public float indeksas;

 

public Main () {

super("KMI skaiciuokle");

 

setLayout(new FlowLayout());

 

item1 = new JLabel("Mase: ");

item1.setToolTipText("Iveskite zmogaus mase kilogramais");

add(item1);

 

mase = new JTextField(10);

mase.setToolTipText("Iveskite zmogaus mase kilogramais");

add(mase);

 

item2 = new JLabel("Ugis: ");

item2.setToolTipText("Iveskite zmogaus ugi centimetrais");

add(item2);

 

ugis = new JTextField(10);

ugis.setToolTipText("Iveskite zmogaus ugi centimetrais");

add(ugis);

 

mygtukas = new JButton("Skaiciuoti");

add(mygtukas);

 

HandlerClass handler = new HandlerClass();

mygtukas.addActionListener(handler);

 

ImageIcon image = new ImageIcon("zmogeliukas.jpg");

//image.setLayout(new BorderLayout());

//JPanel.add(image, BorderLayout.SOUTH);

}

 

void storulis () {

if (indeksas > 25)

JOptionPane.showMessageDialog (null,"tu storas");

}

void skeletas (){

if (indeksas < 18)

JOptionPane.showMessageDialog(null,"per kudas,eik pavalgyk");

}

void normalus (){

if (indeksas >18 && indeksas <25)

JOptionPane.showMessageDialog(null,"esi normalus");

}

 

 

private class HandlerClass implements ActionListener {

public void actionPerformed (ActionEvent event) {

if (event.getSource() == mygtukas) {

try {

float u = Float.parseFloat(ugis.getText()), m = Float.parseFloat(mase.getText());

indeksas = (float)Math.round(m/(u*u/10000)*1000)/1000;

JOptionPane.showMessageDialog(null, "Kuno mases indeksas yra "+indeksas,"Apskaiciuotas KMI",JOptionPane.INFORMATION_MESSAGE);

 

}

catch (NumberFormatException e) {

System.out.println("error");

}

}

 

 

}

 

 

}

 

}

package kmiskaiciuoklis;

 

import java.util.*;

 

 

import javax.swing.JFrame;

 

public class kmi extends Main{

 

public static void main (String args[]) {

Thread t1 = new Thread(new thread("pirmas"));

Thread t2 = new Thread(new thread("antras"));

Thread t3 = new Thread(new thread("trecias"));

 

t1.start();

t2.start();

t3.start();

 

Main xObj = new Main();

xObj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

xObj.setSize(205,180);

xObj.setVisible(true);

}

 

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package kmiskaiciuoklis;

import java.util.*;

/**

*

* @author home

*/

public class thread implements Runnable {

String vardas;

int sk;

Random r = new Random();

public thread(String x){

vardas = x;

sk = r.nextInt(999);

}

 

 

public void run(){

try{

System.out.printf("%s kmi yra %d\n", vardas, sk);

Thread.sleep(sk);

System.out.printf("%s suskaiciuota \n", vardas);

}catch(Exception e){}

 

}}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...