Skocz do zawartości

Programowanie


xemi

Rekomendowane odpowiedzi

package zaliczenie2;

import java.util.*;

public class OrderedArrayList extends ArrayList
{
ArrayList<Double> lista = new ArrayList<Double>();

public boolean add(double value)
{
		int i=1;
		while (lista.get(i)<value) i++;
		lista.add(i,value);
		return true;
	}

public boolean addFirst(double value)
{
	lista.add(0, value);
	return true;
}
}

tak zrobilem te klase, ale przy uruchomieniu programu wywala wyjatek IndexOutOfBoundsException, ktorego nie potrafie naprawic :/

 

Jak dodasz pierwszy element, to jego indeks wynosi 0. Chcąc dodać kolejny wywołujesz funkcję w funkcji add lista.get(i) dla i=1, próbujesz pobrać nieistniejący element, stąd wyjątek.

 

Ja bym to napisał tak:

public void add(double value)
{
int i = 0;
while (i < lista.size() && value >= lista.get(i)) i++;
list.add(i, value);
}

I jest to jedna funkcja do dodawania każdego elementu, nie ma potrzeby dodawania funkcji addFirst, która jest IMO dosyć dziwnym rozwiązaniem. Lepszy też w tym wypadku jest zwracany typ void, bo skoro zawsze masz zwracać true, to po co boolean, skoro nie niesie to za sobą żadnej informacji?

 

PS Nie testowałem tego kodu, co go napisałem, więc błędy są wielce prawdopodobne ;)

 

druga rzecz, przy ktorej program sie wysypuje to metoda zamieniajaca przecinki na kropki

// public static void zamienPrzecinkiNaKropki(String nazwaPliku) throws IOException
{
	BufferedReader odczyt = new BufferedReader(new FileReader(nazwaPliku));
	String linia_tekstu;
	while ((linia_tekstu = odczyt.readLine()) != null)
	{
		(linia_tekstu = odczyt.readLine()).replace(",",".");
	}
}

tutaj tez program sie skompiluje, ale podobnie jak wczesniej, przy uruchomieniu wywala sie wyjatek, tym razem jest to NullPointerException i rowniez nie wiem jak temu zaradzic

 

Tutaj jedyne co mi przychodzi na myśl to to, że błąd bierze się z tego, że wywołujesz readLine() po raz drugi już w ciele pętli. To jest chyba w ogóle niepotrzebne - w końcu tu: while ((linia_tekstu = odczyt.readLine()) != null) przypisujesz zmiennej linia_tekstu odpowiednią wartość, jeśli wywołujesz potem znowu readLine() w ciele pętli, to tak naprawdę zmienisz co drugą linię tekstu. A na koniec, kiedy readLine() zwróci nulla w ciele pętli, a nie w jej nagłówku, to nie ma żadnej kontroli i próbujesz wywołać metodę replace na nullu, skąd NullPointerException. Tak mi się przynajmniej wydaje ;)

Odnośnik do komentarza

napisanie w ten sposob:

public static void zamienPrzecinkiNaKropki(String nazwaPliku) throws IOException
{
	BufferedReader odczyt = new BufferedReader(new FileReader(nazwaPliku));
	String linia_tekstu;
	while ((linia_tekstu = odczyt.readLine()) != null)
	{
		linia_tekstu.replace(",",".");
	}
}

powoduje uruchomienie kodu, ktory jednak nie robi tego co powinien - a wlasciwie to nic nie robi :/

Odnośnik do komentarza

A no fakt, kropki na przecinki zmienią się tylko w Stringu linia_tekstu, z którym nic potem nie robimy. Trzeba by to zapisywać do jakiegoś nowo utworzonego pliku, a po skończonej całej operacji zamknąć oba obiekty plikowe i zmienić nazwę naszego nowego pliku na nazwaPliku która jest argumentem funkcji (być może uprzednio usuwając stary plik pod tą nazwą). Pewnie można to zrobić prościej, ale nic mi nie przychodzi do głowy :P

Odnośnik do komentarza

Moze cos takiego podejdzie ? Nie chcialo mi sie kombinowac juz z tym samym plikiem

 

	public static void main(String[] args) {
	try {
		System.out.println("Reading file...");
		long start = System.currentTimeMillis();

		processSomeFile();

		System.out.println("Processed in: "
				+ (System.currentTimeMillis() - start) + " [ms].");
	} catch (IOException e) {
		System.out.println("Can't open file: " + e.toString());
	}
}

private static void processSomeFile() throws IOException {
	FileReader sourceFile = new FileReader("test.txt");
	BufferedReader readBuff = new BufferedReader(sourceFile);
	FileWriter destFile = new FileWriter("copy.txt");
	BufferedWriter writeBuff = new BufferedWriter(destFile);

	process(readBuff, writeBuff);

	readBuff.close();
	writeBuff.close();
	sourceFile.close();
	destFile.close();		
}

private static void process(BufferedReader readBuff, BufferedWriter writeBuff) throws IOException {
	boolean eof = false;

	while (!eof) {
		String line = readBuff.readLine();

		if (line == null) {
			eof = true;
		} else {
			writeBuff.write(line.replace(",",".")+ "\n");
		}
	}
}

Odnośnik do komentarza

Ehh, za radą wujka programisty ściągnąłem sobie niedawno NetBeans'a, i postanowiłem przerzucić się na pisanie w tym programie. Na początek chciałem zrobić coś z wyświetlaniem prostej grafiki. Niestety mam pewien problem z uruchomieniem jej w NetBeansie - generuje on inicjalizację wszelkich elementów Swinga czy AWT, uniemożliwiając mi dopisanie do nich metody PaintComponent, i nie wiem jak to obejść. A może jest jakiś inny, lepszy sposób na włączenie grafiki?

Proszę o pomoc

Odnośnik do komentarza

A ja mam nowe zadanie i nowe problemy:

 

Oprogramuj uporzadkowana liste dwukierunkowa. Zastap implementacje dwuargumentowej metody insert metoda jednoargumentowa (bez podawania indeksu – bo jest to lista uporzadkowana i metoda ta powinna wstawic element na odpowiednie miejsce). Do porównywania wstawianych obiektów u3yj interfejs komparatora i oprogramuj własna metode porównywania dla wybranego typu wstawianych do listy danych (patrz: zadanie 3).

3. Do przetestowania oprogramowanej w zadaniu 2 listy wstaw dane osób zawierajace: imie, nazwisko oraz date urodzenia. Uporzadkowanie listy powinno uwzgledniac alfabetyczny porzadek nazwiska oraz chronologicznie date urodzenia (Jan Kowalski urodzony 30 kwietnia 1980 roku powinien znalezc sie przed Zenonem Kowalskim i przed dowolna osoba o nazwisku Nowak, a tak3e przed innym Janem Kowalskim urodzonym 1 maja 1980 roku). Oprogramuj zestaw metod testujacych.

4. Oprogramuj metode złaczenia dwóch list z zadania 2. Zastanów sie nad najefektywniejsza metoda łaczenia list (wywołanie dla ka3dego z elementów listy dołaczanej metody insert nie jest najefektywniejsze).

nie bardzo wiem jak poprawnie napisac te metode insert() z jednym argumentem - chodzi mi o to, w jaki sposob zrobic sprawdzanie w ktorym miejscu dany element powinien sie pojawic i jesli juz to jak go potem tam wrzucic - myslalem, zeby zrobic tak, ze sprawdzac comparatorem (dla klasy Osoba - takowy mam) do kiedy dodawany element jest mniejszy, a gdy juz to sprawdzanie sie zakonczy to dodac element na pozycje nastepna - wtedy trzeba by jakos przeniesc pozostale elementy na pozycje k+1 i wlasnie z tym nie wiem jak sobie poradzic

public void insert(Osoba os) throws IndexOutOfBoundsException 
{
	Osoba osoba = new Osoba(os);
	Osoba osoba1 = osoba.getNext();
	++size;
	while (comparator.compare(osoba,osoba1) < 0 ) 
	{
		osoba1 = osoba.getNext();

	}
}

* comparator to zmienna comparatora (zdefiniowanego w innym miejscu)

jeszcze gwoli scislosci: klasa Osoba ma piec pol: dwa Stringi (imie i nazwisko) oraz trzy inty (data urodzenia) oraz metody get/set next/previous

Odnośnik do komentarza

Mógłby mi ktoś wyjaśnić co i jak mam zrobić w tym zadaniu i jak to ugryźć? Z góry dziękuję:)

 

Wszystkie zadania polegają na oprogramowaniu pewnej klasy. W każdym wariancie zadania należy zdefiniować:

- konstruktor bezargumentowy klasy,

- konstruktor kopiujący,

- operator przypisania =,

- destruktor,

- zaprzyjaźniony operator wypisania obiektu klasy w strumieniu:

ofstream &operator<<(ofstream &, klasa &),

 

Implementowana klasa powinna mieć czytelny interfejs oraz powinna ukrywać swoje składowe. Należy rozdzielić interfejs klasy oraz jej implementację umieszczając je w różnych plikach. Należy także dostarczyć program testujący możliwości klasy. Program testujący wywołuje każdą z metod opisanych w poszczególnych zadaniach i dostarcza użytkownikowi informacji, że metody wykonały się poprawnie.

 

UWAGA: NIE wolno stosować biblioteki stl; ogólnie, należy posługiwać się „gołym” C++.

 

Zadanie 13 - Mapa bitowa

Zaimplementować klasę której obiekt reprezentuje prostokątną mapę bitową o dowolnych wymiarach. Mapa ma być wewnętrznie reprezentowana jako dwuwymiarowa tablica int-ów z których każdy definiuje 32 bity (poza ostatnim w wierszu). Oprogramować operatory & (iloczyn bitowy), | (alternatywa bitowa), ^ (xor), &=, |=, ^=. Ponadto, oprogramować konstruktor tworzący mapę bitową o zadanych wymiarach, metody dostępu do bitów pod wskazanymi współrzędnymi oraz metodę zliczającą wszystkie ustawione bity w mapie.

Odnośnik do komentarza

Strasznie sztywna implementacja, ale na chwile obecna nic lepszego nie wymyslilem

 

 

Najpierw klasa okreslajaca strukture i zapewniajaca poprawne tworzenie pytan:

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

/**
*
* @author Fenomen
*/
public class Pytanie 

{

private String tresc;
private String odp_a;
private final boolean a;
private String odp_b;
private final boolean b;
private String odp_c;
private final boolean c;
private int temp;

Pytanie() throws IOException
  {
	StreamTokenizer strTok = new StreamTokenizer(new BufferedReader((new InputStreamReader(System.in))));
	System.out.println("Podaj tresc pytania");
		strTok.nextToken();
		tresc = strTok.sval;
	System.out.println("Podaj odpowiedz \"a\"");
		strTok.nextToken();
		odp_a = strTok.sval;
	System.out.println("Jesli odpowiedz a jest poprawna, wpisz 1, jesli bledna, wpisz 0");
		strTok.nextToken();
		temp = (int) strTok.nval;
		assert (temp ==0 || temp == 1) : "Nieprawidlowa wartosc wspolczynika";
		if (temp == 0) a = false;
			else a = true;
	System.out.println("Podaj odpowiedz \"b\"");
		strTok.nextToken();
		odp_b = strTok.sval;
	System.out.println("Jesli odpowiedz b jest poprawna, wpisz 1, jesli bledna, wpisz 0");
		strTok.nextToken();
		temp = (int) strTok.nval;
		assert (temp !=0 || temp == 1) : "Nieprawidlowa wartosc wspolczynika";
		if (temp == 0) b = false;
			else b = true;
	System.out.println("Podaj odpowiedz \"c\"");
		strTok.nextToken();
		odp_c = strTok.sval;
	System.out.println("Jesli odpowiedz c jest poprawna, wpisz 1, jesli bledna, wpisz 0");
		strTok.nextToken();
		temp = (int) strTok.nval;
		assert (temp ==0 || temp == 1) : "Nieprawidlowa wartosc wspolczynika";
		if (temp == 0) c = false;
			else c = true;
}

public String getTresc()
{
	return tresc;
}

public String getOdpA()
{
	return odp_a;
}

public String getOdpB()
{
	return odp_b;
}

public String getOdpC()
{
	return odp_c;
}

public boolean getA()
{
	return a;
}

public boolean getB()
{
	return b;
}

public boolean getC()
{
	return c;
}

// setery pomijam bo nie sa w tym przypadku nam do niczego potrzebne
// zwlaszcza, ze wszystkie pola sa finalne

}

 

 

A teraz klasa, ktora to wykorzystuje i daje mozliwosc wziecia udzialu w quizie

import java.util.*;
import java.io.*;
/**
*
* @author Fenomen
*/
public class Quiz 
{

private final int liczbaPytan = 4;

ArrayList<Pytanie> quiz;

StreamTokenizer strTok = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

private String temp_odp;
private boolean temp;
private int liczbaPunktow = 0;

public Quiz() throws IOException
{
	assert liczbaPytan > 0 : "Liczba pytan nie moze byc nie-dodatnia";
	quiz = new ArrayList<Pytanie>(liczbaPytan);
	for (int i=0; i < liczbaPytan; i++)
	{
		quiz.add(new Pytanie());
	}
}


public int getLiczbaPytan()
{
	return liczbaPytan;
}

public void rozwiazQuiz() throws IOException
{
	for (int i=0; i < getLiczbaPytan(); i++)
	{
		System.out.println("Pytanie nr "+i+".");
		System.out.println(quiz.get(i).getTresc());
		System.out.println(quiz.get(i).getOdpA());
		System.out.println(quiz.get(i).getOdpB());
		System.out.println(quiz.get(i).getOdpC());
		System.out.println("Twoja odpowiedz to: ");
		strTok.nextToken();
		temp_odp = strTok.sval;
		assert temp_odp.equals("a") || temp_odp.equals("b") || temp_odp.equals("c") : "Nieprawidlowy format odpowiedzi";
		if (temp_odp.equals("a")) temp=quiz.get(i).getA();
			  else if (temp_odp.equals("b")) temp=quiz.get(i).getB();
			  else temp=quiz.get(i).getC();
		if (temp == true) liczbaPunktow++;
	}
	System.out.println("Koniec quizu. Zgromadziles "+liczbaPunktow+" punktow");
}

}

Odnośnik do komentarza

To teraz ja :keke:

 

Zdecydowalem sie skorzystac z plikow txt, aby miec juz spreparowane jakies pytania:

 

Tak wyglada dzialanie programu

 

Kto zdobyl MS'1990 ? 
# Niemcy 
# Polska 
# Brazylia 
# Argentyna 
A
Wynik meczu Niemcy - Jugoslawia na MS'1990 ? 
# 1:0 
# 2:1 
# 2:4 
# 4:1 
D
Kto pociagnal z glowkie Materazziego ? 
# Ronaldo 
# Roy Keane 
# Eric Cantona 
# Zidane 
D
Trenerem Polski w MS'2002 byl ? 
# Henryk Kasperczak 
# Pawel Janas 
# Jerzy Engel 
# Leo Benhauer 
A
==========================
Id Pytania | Odpowiedz | Prawidlowa | Pelna tresc
1 | A | TAK | Kto zdobyl MS'1990 ? 
2 | D | TAK | Wynik meczu Niemcy - Jugoslawia na MS'1990 ? 
3 | D | TAK | Kto pociagnal z glowkie Materazziego ? 
4 | A | NIE | Trenerem Polski w MS'2002 byl ? 
SUMA PUNKTOW: 3

 

 

A teraz implementacja

 

quiz.txt

1|Kto zdobyl MS'1990 ? |Niemcy |Polska |Brazylia |Argentyna |A
2|Wynik meczu Niemcy - Jugoslawia na MS'1990 ? |1:0 |2:1 |2:4 |4:1 |D
3|Kto pociagnal z glowkie Materazziego ? |Ronaldo |Roy Keane |Eric Cantona |Zidane |D
4|Trenerem Polski w MS'2002 byl ? |Henryk Kasperczak |Pawel Janas |Jerzy Engel |Leo Benhauer |C

 

Czas na zwykle obiekty POJO

 

public class Question {
private int id;
private String question;
private List<String> answerList;
private String correctAnswer;


public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public List<String> getAnswerList() {
	return answerList;
}
public void setAnswerList(List<String> answerList) {
	this.answerList = answerList;
}
public String getCorrectAnswer() {
	return correctAnswer;
}
public void setCorrectAnswer(String correctAnswer) {
	this.correctAnswer = correctAnswer;
}
public String getQuestion() {
	return question;
}
public void setQuestion(String question) {
	this.question = question;
}


}

=======================
public class Quiz {
private List<Question> questions;
private List<Result> result;

public List<Question> getQuestions() {
	return questions;
}
public void setQuestions(List<Question> questions) {
	this.questions = questions;
}
public List<Result> getResult() {
	return result;
}
public void setResult(List<Result> result) {
	this.result = result;
}
}

==========================
public class Result {
private int questionNumber;
private String answer;
private int value;

public String getAnswer() {
	return answer;
}
public void setAnswer(String answer) {
	this.answer = answer;
}
public int getQuestionNumber() {
	return questionNumber;
}
public void setQuestionNumber(int questionNumber) {
	this.questionNumber = questionNumber;
}
public int getValue() {
	return value;
}
public void setValue(int value) {
	this.value = value;
}
}

 

 

Intefejs serwisu, ktory bedzie mial 3 metody:

- generateQuiz - mapuje zawartosc pliku Txt na obiekty reprezentujace Quiz.

- getQuiz - na konstruktorze serwisu tworzony jest obiekt Quiz

- obtainQuestionById - umozliwia pobranie pytania z listy pytan wg id

 

public interface QuizService {
public void generateQuiz();
public Quiz getQuiz();
public Question obtainQuestionById(int id);
}

=====================
public class QuizServiceImpl implements QuizService {
private Quiz quiz;
private static int questionsPerQuiz = 3;

public QuizServiceImpl() {
	super();
	this.quiz = new Quiz();
	this.quiz.setResult(new ArrayList<Result>());
}

public Question obtainQuestionById(int id) {
	for (Question question : quiz.getQuestions()) {
		if (id == question.getId()) {
			return question;
		}
	}
	return null;
}

public void generateQuiz() {
	FileReader sourceFile;
	try {
		sourceFile = new FileReader("quiz.txt");

		BufferedReader readBuff = new BufferedReader(sourceFile);

		List<Question> questions = new ArrayList<Question>();

		boolean eof = false;

		while (!eof) {
			String line = readBuff.readLine();

			if (line == null) {
				eof = true;
			} else {
				String[] questionAsStr = line.split("\\|");

				List<String> answers = new ArrayList<String>();
				answers.add(questionAsStr[2]);
				answers.add(questionAsStr[3]);
				answers.add(questionAsStr[4]);
				answers.add(questionAsStr[5]);

				Question question = new Question();
				question.setAnswerList(answers);
				question.setQuestion(questionAsStr[1]);
				question.setCorrectAnswer(questionAsStr[6].trim());
				question.setId(Integer.valueOf(questionAsStr[0].trim()).intValue());

				questions.add(question);
			}
		}

		quiz.setQuestions(questions);

		randomizeQuestions();

	} catch (Exception e) {
		throw new RuntimeException(e);
	} 
}

private void randomizeQuestions() {
	int [] questionsTable = new int[questionsPerQuiz];
	random(questionsTable, 1, 7);

	List<Question> randomQuestionList = new ArrayList<Question>();
	for (int i = 0; i < questionsTable.length; i++) {
		Integer questionId = questionsTable[i];
		randomQuestionList.add(obtainQuestionById(questionId));
	}

	quiz.setQuestions(randomQuestionList);
}

private void random(int [] tab, int start, int end)
{
	Vector<Integer> v = new Vector<Integer>();
	Random rand = new Random();
	for(int i = start; i < end; i++)  
		v.add(i);
	for(int j = 0; j < tab.length; j++)  
		 tab[j] = v.remove(rand.nextInt(v.size()));
}

public Quiz getQuiz() {
	return quiz;
}

public void setQuiz(Quiz quiz) {
	this.quiz = quiz;
}
}

 

 

ViewHelper - taka klasa pomocnicza odpowiedzialna za wyswietlanie zawartosci

 

public class ViewHelper {

public static void showQuestions(QuizService quizService) throws Exception {

	StreamTokenizer strTok = new StreamTokenizer(new BufferedReader((
			new InputStreamReader(System.in))));

	for (Question question : quizService.getQuiz().getQuestions()) {
		System.out.println(question.getQuestion());

		List<String> answers = question.getAnswerList();

		for (String str: answers) {
			System.out.println("# " + str);
		}

		strTok.nextToken();
		String answer = strTok.sval;

		Result result = buildResult(question, answer);

		quizService.getQuiz().getResult().add(result);
	}

}

public static void showSummaryResult(QuizService quizService) {
	System.out.println("Id Pytania | Odpowiedz | Prawidlowa | Pelna tresc");
	int sum = 0;

	for (Result result: quizService.getQuiz().getResult()) {
		String verdict = obtainVerdict(result);
		sum = sum + result.getValue();

		Question question = quizService.obtainQuestionById(result.getQuestionNumber());

		System.out.println(result.getQuestionNumber() + " | " + result.getAnswer() + " | " 
				+ verdict + " | " + question.getQuestion());
	}

	System.out.println("SUMA PUNKTOW: " + sum);
}

private static String obtainVerdict(Result result) {
	if (result.getValue() > 0) {
		return "TAK";
	} else {
		return "NIE";
	}
}

private static Result buildResult(Question question, String answer) {
	Result result = new Result();
	result.setAnswer(answer);
	result.setQuestionNumber(question.getId());

	if (answer.equalsIgnoreCase(question.getCorrectAnswer())) {
		result.setValue(1);
	} else {
		result.setValue(0);
	}
	return result;
}

 

QuizExample - wykorzystanie tego wszystkiego

 

public class QuizExample {
public static void main (String[] args) throws Exception {
	QuizService quizService = new QuizServiceImpl();
	quizService.generateQuiz();

	ViewHelper.showQuestions(quizService);

	System.out.println("==========================");

	ViewHelper.showSummaryResult(quizService);
}
}

 

 

Czego nie ma ?

- nie ma sprawdzania czy user nie wpisal przypadkiem jakiejs pierdoly

 

Co jest ?

- latwy, zewnetrzny format do dodawania kolejnych pytan

- kazde pytanie moze miec dowolna liczbe odpowiedzi (choc pewnie gdybysmy chcieli na serio wykorzystac to, to trzebaby pewnie wprowadzic jakis znacznik dostepnej ilosci odpowiedzi dla kazdego pytania, aby potem moc zwalidowac czy user nie wprowadzil pierdoly)

- kazde pytanie ma wlasna "wage" (value), dzieki czemu mozliwe jest np. przyznawanie 1 pkt za pytanie X, a 15 pkt za pytanie Y.

 

 

EDIT: dorobilem: - ograniczenie liczby pytan (ustawilem 3 bo latwiej mi bylo testowac), losowanych z puli wszystkich pytan - pytania sie nie powtarzaja. Normalnie prawie jak milionerzy ;D

Odnośnik do komentarza

Moznaby sie pokusic o wprowadzenie mozliwosci wiecej niz 1 poprawnej odpowiedzi - wystarczyloby tylko troszke przerobic metode buildResult, aby sprawdzalo czy String question.getCorrectAnswer() jest dluzszy niz 1 i jesli tak no to sprawdzalo, czy wpisana odpowiedz jest zgodna z ktoryms ze znakow tego Stringa.

Odnośnik do komentarza
a nie da sie jakos prosciej tego programu napisac?

Pojecie prostosty w javie zmienia sie wraz z tym ile w tej javie siedzisz :D Po pewnym czasie prostym staje sie nie to co malo zajmuje, a to co mozna latwo zmienic, usprawnic, dopisac jakas nowa funkcjonalnosc, przetestowac itd. itp. :) Na upartego to wszystko moznaby w jednej klasie umiescic, ale nie o to w Javie chodzi. Tak to w Pascalu mozna pisac ;d

 

Odnosnie wersji Javy.

w javie 1.4 wszelkie elementy list byly obiektami typu Object (czyli np. liste tworzylo sie tak ArrayList list = new ArrayList(); i potem jesli pobierales taki obiekt to rzutowales go). w javie 1.5 natomiast mozesz okreslic typ obiektu, jaki bedzie zawierala ta lista, czyli ArrayList<Dupa> list = new ArrayList<Dupa>(); okresla, ze lista bedzie posiadala obiekty typu Dupa

 

Czyli zeby Ci dzialal kod Fenomena, to musisz pousuwac z list znacnziki <Blabla>, to powinno zalatwic sprawe, choc nie jestem pewien czy jeszcze nie ma jakichs sztuczek. A w ogole to czemu jave 1.4.2 masz ? sciagaj 1.5

Odnośnik do komentarza

Postanowilem sprobowac swoich sil i napisac ten program po swojemu. Nie do konca mi to chyba wyszlo dlatego bede wdzieczny za mala poprawke :) (Tylko prosze sie nie smiac nie lubie programowania chce zostac sieciowcem! :>)

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

import java.util.Random;

 

public class szkola {

 

public static void main(String[] args) throws

NumberFormatException, IOException {

BufferedReader reader = new BufferedReader(new

InputStreamReader(System.in));

 

boolean wynik=false;

int ocena=0;

char a='a';

char b='b';

char c='c';

Random rand = new Random();

while (wynik==false){

System.out.print("Odpowiedz na pytania i wpisz litere z poprawna odpowiedzia.");

System.out.print("Pytanie nr 1: 1+1=?");

System.out.print("a=2__b=3__c=4");

int odp = Integer.parseInt(reader.readLine());

if (odp==a){

 

ocena++;

wynik=false;

}

else if (odp==b || odp==c){

 

}

System.out.print("Pytanie nr 2: 2+1=?");

System.out.print("a=2__b=3__c=8");

int odp2 = Integer.parseInt(reader.readLine());

if (odp2==b){

 

ocena++;

wynik=false;

}

else if (odp2==a || odp2==c){

 

System.out.print("Pytanie nr 3: 5-3=?");

System.out.print("a=1__b=8__c=2");

int odp3 = Integer.parseInt(reader.readLine());

if (odp3==c){

 

ocena++;

wynik=false;

}

else if (odp3==a || odp3==b);

wynik=false;

}

 

if (ocena==0){

System.out.println("Udzieliles "+ocena+" poprawnych odpowiedzi i uzyskales ocene 0");

}

else if (ocena==1){

System.out.println("Udzieliles "+ocena+" poprawnych odpowiedzi i uzyskales ocene 1");

}

else if (ocena==2){

System.out.println("Udzieliles "+ocena+" poprawnych odpowiedzi i uzyskales ocene 2");

}

else if (ocena==3){

System.out.println("Udzieliles "+ocena+" poprawnych odpowiedzi i uzyskales ocene 3");

System.in.read();

wynik=true;

}

}

}

}

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

Ładowanie
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...