Wątek przeniesiony 2015-12-22 00:37 z Java przez bogdans.

Początkowy program.

0

Witajcie , mam problem z tym oto programem , wszystko dzialalo cacy dopoki nie pobawilem sie troche z || (OR) w if(); to jest na samym dole kodu ponizej tzn drugi poziom quizu .
Jak na razie ucze sie programowac sam i dopiero jestem poczatkujacy bo za rok na studia ide i tam troche wiecej praktyki jak i teorii :P
Problem jest w tym ze jak odpale program to jak potem na drugim poziomie quizu wpisze poprawna odpowiedz to ze 3 razy enter musze wcisnac i wyskakuje ze nie poprawna odpowiedz mimo tego ze dobra odpowiedz wpisalem i to wszystko sie dzieje jak uzyje || czyli OR . Program nie jest jeszcze skonczony lecz mam plan go skonczyc i wziac sie za cos trudniejszego jak mi sie uda rozwiazac ten problem :P

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner quiz = new Scanner(System.in);
        int pierwsze, drugie, trzecie, czwarte, piate, pkt1, pkt2, pkt3, pkt4, pkt5;
        pierwsze = 55;
        drugie = 200;
        trzecie = 900;
        czwarte = 420;
        piate = 80;
        System.out.println("Witaj w Quizolandii!!");
        System.out.println("Bedziesz musial odpowiedziec na serie pytan zanim dojdziesz do ostatniego poziomu! Kategoria - Matematyka(Poziom Latwy)");
        System.out.println("Potrzebujesz co najmniej wynik 3/5 aby przejsc do kolejnego poziomu !");
        System.out.println("Pierwsze pytanie - Ile to jest 5x11 ?");
        System.out.println("Odpowiedz:");

        if (pierwsze == quiz.nextInt()) {
            System.out.println("Dobrze sie spisales!");
            pkt1 = 1;
        } else {
            System.out.println("Niestesty nie trafiles !");
            pkt1 = 0;
        }

        System.out.println("Drugie pytanie - Ile to jest 50x4 ?");
        System.out.println("Odpowiedz:");

        if (drugie == quiz.nextInt()) {
            System.out.println("Dobrze sie spisales!");
            pkt2 = 1;
        } else {
            System.out.println("Niestesty nie trafiles !");
            pkt2 = 0;
        }

        System.out.println("Trzecie pytanie - Ile to jest 300x3 ?");
        System.out.println("Odpowiedz:");

        if (trzecie == quiz.nextInt()) {
            System.out.println("Dobrze sie spisales!");
            pkt3 = 1;
        } else {
            System.out.println("Niestety nie trafiles !");
            pkt3 = 0;
        }

        System.out.println("Czwarte pytanie - Ile to jest 10x42 ?");
        System.out.println("Odpowiedz:");

        if (czwarte == quiz.nextInt()) {
            System.out.println("Dobrze sie spisales !");
            pkt4 = 1;
        } else {
            System.out.println("Niestety nie trafiles !");
            pkt4 = 0;
        }

        System.out.println("Piate pytanie - Ile to jest 160/2 ?");
        System.out.println("Odpowiedz:");

        if (piate == quiz.nextInt()) {
            System.out.println("Dobrze sie spisales!");
            pkt5 = 1;
        } else {
            System.out.println("Niestety nie trafiles !");
            pkt5 = 0;
        }
        int wynik = pkt1 + pkt2 + pkt3 + pkt4 + pkt5;
        int dalej = 3;
        if(dalej > wynik) {
            System.out.print("Nie udalo ci sie przejsc do drugiego poziomu! Twoj wynik to ");
            System.out.print(wynik);
            System.out.println("/5 pytan!");
            System.exit(0);
        }
        if (dalej < wynik) {
            System.out.print("Gratulacje ukonczenia Quizu ! Twoj wynik to ");
            System.out.print(wynik);
            System.out.println("/5 punktow !");
            Scanner quiz2 = new Scanner(System.in);
            System.out.println("Przechodzisz do poziomu drugiego !");
            int pkt21, pkt22, pkt23, pkt24, pkt25;
            String Mark = "Mark Zuckerberg";
            String Mark2 = "mark zuckerberg";
            String Larry = "Larry Page";
            String Larry2 = "larry page";
            String Larry3 = "lary page";
            String Larry4 = "lary Page";
            String Larry5 = "Lary page";
            int piec = 25;
            String java = "if";
            String java2 = "IF";
            String java3 = "if()";
            String java4 = "IF()";
            String java5 = "if();";
            String java6 = "IF();";
            String tak = "Tak";
            String tak2 = "tak";
            String tak3 = "TAK";
            String tak4 = "Yes";
            String tak5 = "YES";
            String tak6 = "yes";

            System.out.println("Poziom drugi - Kategoria Ogolna - Trudnosc (Sredni)");
            System.out.println("Potrzebujesz 4/5 punktow aby przejsc do Ostatniego poziomu !");
            System.out.println("Pierwsze Pytanie - Kto jest zalozycielem facebooka ?");
            System.out.println("Odpowiedz:");

            if (Mark == quiz2.nextLine() || Mark2 == quiz2.nextLine()) {
                System.out.println("Bardzo dobrze !");
                pkt21 = 1;
            }
            else {
                System.out.println("Niestety nie trafiles !");
                pkt21 = 0;
            }

            System.out.println("Drugie Pytanie - Kto jest zalozycielem Google ?");
            System.out.println("Odpowiedz:");
            if(Larry == quiz2.nextLine()|| Larry2 == quiz2.nextLine() || Larry3 == quiz2.nextLine() || Larry4 == quiz2.nextLine() || Larry5 == quiz2.nextLine()){
                System.out.println("Bardzo dobrze !");
                pkt22 = 1;
            }else{
                System.out.println("Niestety nie trafiles !");
                pkt22 = 0;

            }
            System.out.println("Trzecie Pytanie - Ile to jest 5 do potegi 2 ?");
            System.out.println("Odpowiedz:");
            if (piec == quiz2.nextInt()){
                System.out.println("Bardzo dobrze !");
                pkt23 = 1;
            }else {
                System.out.println("Niestety nie trafiles !");
                pkt23 = 0;
            }
            System.out.println("Czwarte Pytanie - jakie polecenie oznacza Jesli w javie ?");
            System.out.println("Odpowiedz:");
            if (java == quiz2.nextLine()||java2 == quiz2.nextLine()||java3 == quiz2.nextLine()||java4 == quiz2.nextLine()||java5 == quiz2.nextLine()|| java6 == quiz2.nextLine()){
                System.out.println("Bardzo dobrze !");
                pkt24 = 1;
            }else {
                System.out.println("Niestety nie trafiles !");
                pkt24 = 0;
            }
            System.out.println("Ostatnie Pytanie - Czy Java jest obiektywnym jezykiem programowania ?");
            System.out.println("Odpowiedz:");
            if (tak == quiz2.nextLine()||tak2 == quiz2.nextLine()||tak3 == quiz2.nextLine()||tak4 == quiz2.nextLine() ||tak5 == quiz2.nextLine() ||tak6 == quiz2.nextLine()){
                System.out.println("Bardzo dobrze !");
                pkt25 = 1;
            } else {
                System.out.println("Niestety nie trafiles!");
                pkt25 = 0;
            }
            int equal = pkt21 + pkt22 + pkt23 + pkt24 + pkt25;
            System.out.print("Gratulacje ukonczenia drugiego poziomu ! Twoj wynik to ");
            System.out.print(equal);
            System.out.println("/5");




            }

        }
    }
1

Po pierwsze, źle porównujesz Stringi. Operator == porównuje referencje (adres w pamięci), a nie zawartość. Porównuje się tak:

s1.equals(s2)

.
Po drugie, nie potrzebujesz wielu wersji poprawnej odpowiedzi różniących się wielkością liter:

s1.equalsIgnoreCase(s2)

.
Po trzecie, każde wywołanie nextLine to (wymagające naciśnięcia Enter) odczytanie kolejnego wiersza. Jeśli nie korzystasz z metody equalsIgnoreCase, to zamiast tego

            if (Mark == quiz2.nextLine() || Mark2 == quiz2.nextLine()) {
                System.out.println("Bardzo dobrze !");
                pkt21 = 1;
            }
            else {
                System.out.println("Niestety nie trafiles !");
                pkt21 = 0;
            }

powinno być

            String answer = quiz2.nextLine();
            if (Mark.equals(answer)  || Mark2.equals(answer) {
                System.out.println("Bardzo dobrze!");
                pkt2++;
            }
            else {
                System.out.println("Niestety nie trafiles!");

            }

Nie potrzebujesz pięciu zmiennych do pamiętania punktów, wystarczy jedna i sumowanie w locie.
Na pytanie "Czy Java jest obiektywnym jezykiem programowania ?" chyba nikt nie zna odpowiedzi, chodziło Ci pewnie o język obiektowy.
Zasady języka polskiego obowiązują również w programach. Nie umieszcza się spacji przed ! oraz ?.

0
System.out.println("Trzecie Pytanie - Ile to jest 5 do potegi 2?");
        System.out.println("Odpowiedz:");
        int answer3 = quiz2.nextInt();
        if (piec == answer3) {
            System.out.println("Bardzo dobrze!");
            pkt23 = 1;
        } else {
            System.out.println("Niestety nie trafiles!");
            pkt23 = 0;
        }

        System.out.println("Czwarte Pytanie - Co pije krowa?");
        System.out.println("Odpowiedz:");
        String answer4 = quiz2.nextLine();
        if ("Wode".equals(answer4) || "wode".equals(answer4)) {
            System.out.println("Bardzo dobrze!");
            pkt24 = 1;
        } else {
            System.out.println("Niestety nie trafiles!");
            pkt24 = 0;
        }
        System.out.println("Ostatnie Pytanie - Czy Java jest obiektowymm jezykiem programowania?");
        System.out.println("Odpowiedz:");
        String answer5 = quiz2.nextLine();
        if (tak.equals(answer5) || tak2.equals(answer5) || tak3.equals(answer5) || tak4.equals(answer5) || tak5.equals(answer5) || tak6.equals(answer5)) {
            System.out.println("Bardzo dobrze!");
            pkt25 = 1;
        } else {
            System.out.println("Niestety nie trafiles!");
            pkt25 = 0;
        }

Dzieki lecz powyzej mam kolejny problem , jak wpisze odpowiedz do pytania 3 to mi przeskakuje do pytania 5 i Od razu zaznacza ze 4 pytanie jest zle , mi sie wydaje ze to jest zwiazane z tym ze int answer3 = quiz.nextInt(); i po tym jest answer4 = quiz.nextLine(); ale nie wiem co z tym zrobic :P Bylbym wdzieczny za pomoc ! :)

EDIT : Dobra juz naprawilem , dodalem oddzielny Scanner do int :P

0

Wybrałeś dziwny sposób naprawy. Metoda nextInt odczytuje tylko pierwszą napotkaną liczbę, cała reszta wpisana przez użytkownika (łącznie z końcowym Enterem!) zostaje w buforze klawiatury. Wystarczy czyścić bufor klawiatury

        System.out.println("Odpowiedz:");
        int answer3 = quiz2.nextInt();
        quiz2.nextLine(); //tego wiersza brakowało
        if (piec == answer3) {
            System.out.println("Bardzo dobrze!");
            pkt23 = 1;
        } else {
            System.out.println("Niestety nie trafiles!");
            pkt23 = 0;
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1