tazos87 Δημοσ. 15 Μαΐου 2014 Δημοσ. 15 Μαΐου 2014 Είμαι αρχάριος,οπότε συγχωρείστε με για όποιο χάος δείτε. Εχω μάθει while,if,switch και κάποια βασικά μεθόδων + constructor. Θέλω να κάνω σαν κουίζ που έχει πολλαπλές απαντήσεις... Είδα κάπου οτι για να το κάνω αυτό πρέπει να χρησιμοποιήσω arrays, είδα και γι'αυτά οπότε...ωστόσο δεν νομίζω να έκανα καλή χρήση των arrays στο πρόγραμμα που θα δείτε. Το ΒΑΣΙΚΟ ΠΡΟΒΛΗΜΑ είναι οτι δεν μου πιάνει για σωστές τις απαντήσεις. πχ είτε γράψω "b" είτε "Obama" (χωρις εισαγωγικα) στη πρώτη ερώτηση, δεν αυξάνεται ο μετρητης για τις σωστές απαντήσεις που έχω βάλει(correct++). Γιατί? (ή αν έχετε εναλλακτικό τρόπο -αλλά οχι πολύ προχωρημένο- για τη καταμέτρηση των απαντήσεων) package quizAdvanced; import java.util.*; public class quizAdvanced { public static void main(String[] args) { Scanner input = new Scanner(System.in); String[] a = new String[5]; String[] b = new String[5]; String[] c = new String[5]; int count = 0; String answer; int correct = 0; int wrong = 0; a[0] = "G. Bush Jr."; a[1] = "Obama"; a[2] = "Lincoln"; a[3] = "Washington"; a[4] = "Papandreou"; b[0] = "Apple"; b[1] = "Motorola"; b[2] = "Lenovo"; b[3] = "Sony"; b[4] = "Google"; c[0] = "Doha"; c[1] = "Boha"; c[2] = "Al Khtor"; c[3] = "Loha"; c[4] = "Dammam"; while (count < 3) { switch (count) { case 0: System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "Who is the president of U.S.A?", a[0],a[1],a[2],a[3],a[4], "Enter the answer: "); answer = input.nextLine(); if (answer == "b" || answer == "Obama") ++correct; else ++wrong; break; case 1: System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "Which company of the following created Android software?", b[0],b[1],b[2],b[3],b[4], "Enter the answer: "); answer = input.nextLine(); if (answer == "e" || answer == "Google") ++correct; else ++wrong; break; default: System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "What's the capital of Qatar?", c[0],c[1],c[2],c[3],c[4], "Enter the answer: "); answer = input.nextLine(); if (answer == "a" || answer == "Doha") ++correct; else ++wrong; break; } ++count; } System.out.println("Results: "); if (correct == 3) System.out.println("Congrats! 3 out of 3."); else if (correct == 2) System.out.println("Good,but you could be better."); else System.out.println("You failed!"); System.out.println(correct +" - " + wrong); } } Όποιες προτάσεις έχετε και διορθώσεις, δεκτές! Θα είχα περιέργεια πως γίνεται οι ερωτήσεις (αν είχα 100 ας πούμε αντι για 3) να ανακατεύονται καθώς και οι απαντήσεις! Δηλαδή σε μια ερώτηση να μην είναι η σωστή απάντηση πάντα στο b,να πηγαίνει και σε άλλη θέση. Ευχαριστώ
tr3quart1sta Δημοσ. 15 Μαΐου 2014 Δημοσ. 15 Μαΐου 2014 στην Java με == μπορεις να συγκρινεις μονο primitive types (int, double, char, κλπ..) ... για ολα τα αλλα (το String δεν ειναι primitive type) θα χρησιμοποιεις την μεθοδο equals() , δλδ: if ("b".equals(answer) || "Obama".equals(answer))
Moderators Kercyn Δημοσ. 15 Μαΐου 2014 Moderators Δημοσ. 15 Μαΐου 2014 Δυστυχώς, η Γιάβα δεν υποστηρίζει τον τελεστή "==" για να συγκρίνεις strings (ο "==" στα strings κάνει άλλο πράγμα από αυτό που θες). Δες εδώ.
bnvdarklord Δημοσ. 15 Μαΐου 2014 Δημοσ. 15 Μαΐου 2014 Για κάποιο χαζό λόγο στην Java για να δεις αν δύο strings είναι ίσα πρέπει να πεις: str1.equals(str2) αντί να χρησιμοποιήσεις το ==. edit: lol τριπλή απαντηση
tazos87 Δημοσ. 15 Μαΐου 2014 Μέλος Δημοσ. 15 Μαΐου 2014 Ευχαριστώ πολύ guys!Παρόλα αυτά έχω την εντύπωση οτι κάτι δεν έχω κάνει καλά με τα arrays...δεν τα αξιοποίησα σωστά Και Θα είχα περιέργεια πως γίνεται οι ερωτήσεις (αν είχα 100 ας πούμε αντι για 3) να ανακατεύονται καθώς και οι απαντήσεις! Δηλαδή σε μια ερώτηση να μην είναι η σωστή απάντηση πάντα στο b,να πηγαίνει και σε άλλη θέση.
tr3quart1sta Δημοσ. 15 Μαΐου 2014 Δημοσ. 15 Μαΐου 2014 package quizAdvanced; import java.util.*; public class quizAdvanced { public static void main(String[] args) { Scanner input = new Scanner(System.in); int count = 0; String userAnswer; int correct = 0; int wrong = 0; ArrayList<ArrayList<String>> questions = new ArrayList<>(); // H proth epilogh einai panta h sosth apanthsh, alla tha anakateutei argotera questions.add(new ArrayList<String>(Arrays.asList("Obama", "G. Bush Jr.", "Lincoln", "Washington", "Papandreou"))); questions.add(new ArrayList<String>(Arrays.asList("Google", "Apple", "Motorola", "Lenovo", "Sony"))); questions.add(new ArrayList<String>(Arrays.asList("Doha", "Boha", "Al Khtor", "Loha", "Dammam"))); Collections.shuffle(questions); for(ArrayList<String> al : questions) { String answerWord = al.get(0); String answerLetter = ""; Collections.shuffle(al); char currentLetter = 'a'; for(String s: al) { System.out.println(currentLetter + ")" + s); if (s.equals(answerWord)) answerLetter = "" + currentLetter; currentLetter++; } System.out.println("Enter the answer"); userAnswer = input.nextLine(); if ( answerWord.equals(userAnswer) || answerLetter.equals(userAnswer)){ correct++; } else { wrong++; } } System.out.println("Results: "); if (correct == questions.size()) System.out.println("Congrats! All answers are correct!"); else if (correct == 0) System.out.println("You failed!"); else System.out.println("Good, but you could be better."); System.out.println(correct +" - " + wrong); } } edit: shit, ξεχασα τις ερωτησεις
tazos87 Δημοσ. 15 Μαΐου 2014 Μέλος Δημοσ. 15 Μαΐου 2014 Ευχαριστώ όλους! @tr3quart1sta :Χρήσιμη η απάντηση σου απλά δεν ξέρω ακόμα κάποια απο αυτά που έγραψες, οπότε θα ανατρέξω εδω λίγο αργότερα
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα