Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Είμαι αρχάριος,οπότε συγχωρείστε με για όποιο χάος δείτε.

Εχω μάθει 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);
	}
}

Όποιες προτάσεις έχετε και διορθώσεις, δεκτές!  :rolleyes:

Θα είχα περιέργεια πως γίνεται οι ερωτήσεις (αν είχα 100 ας πούμε αντι για 3) να ανακατεύονται καθώς και οι απαντήσεις! Δηλαδή σε μια ερώτηση να μην είναι η σωστή απάντηση πάντα στο b,να πηγαίνει και σε άλλη θέση.

 

Ευχαριστώ

Δημοσ.

στην Java με == μπορεις να συγκρινεις μονο primitive types (int, double, char, κλπ..) ... για ολα τα αλλα (το String δεν ειναι primitive type) θα χρησιμοποιεις την μεθοδο equals() , δλδ:

if ("b".equals(answer) || "Obama".equals(answer))
  • Moderators
Δημοσ.

Δυστυχώς, η Γιάβα δεν υποστηρίζει τον τελεστή "==" για να συγκρίνεις strings (ο "==" στα strings κάνει άλλο πράγμα από αυτό που θες).

Δες εδώ.

Δημοσ.

Για κάποιο χαζό λόγο στην Java για να δεις αν δύο strings είναι ίσα πρέπει να πεις:

 

str1.equals(str2)

 

αντί να χρησιμοποιήσεις το ==.

 

edit: lol τριπλή απαντηση

Δημοσ.

Ευχαριστώ πολύ guys!
Παρόλα αυτά έχω την εντύπωση οτι κάτι δεν έχω κάνει καλά με τα arrays...δεν τα αξιοποίησα σωστά  :unsure:

 

Και Θα είχα περιέργεια πως γίνεται οι ερωτήσεις (αν είχα 100 ας πούμε αντι για 3) να ανακατεύονται καθώς και οι απαντήσεις! Δηλαδή σε μια ερώτηση να μην είναι η σωστή απάντηση πάντα στο b,να πηγαίνει και σε άλλη θέση.

Δημοσ.
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, ξεχασα τις ερωτησεις :P

Δημοσ.

Ευχαριστώ όλους!

@tr3quart1sta :

Χρήσιμη η απάντηση σου απλά δεν ξέρω ακόμα κάποια απο αυτά που έγραψες, οπότε θα ανατρέξω εδω λίγο αργότερα  ;)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...