I want to develop a “periodic table tester” which asks you the atomic number of any random element. If you answer wrong, it will tell you the correct answer.
Here’s my code:
JavaScript
x
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
class element {
public static void main(String[] args) {
// create an object of Scanner class
Scanner input = new Scanner(System.in);
// creating an array of elements (only first thirty for now)
String[] elements = {"hydrogen", "helium", "lithium", "berylium", "boron", "carbon", "nitrogen", "oxygen", "flourine", "neon", "sodium", "magnesium", "aluminium", "silicon", "phosphorus", "sulphur", "chlorine", "argon", "potassium", "calcium", "scandium", "titanium", "vandium", "chromium", "manganese", "iron", "cobalt", "nickel", "copper", "zinc"};
// pick a random element
Random random = new Random();
int pickRandom = random.nextInt(elements.length);
String randomElement = elements[pickRandom];
// ask the question
System.out.println("What is the atomic number of "+ randomElement + "?");
System.out.print("Your answer: ");
// ask for input
int yourAnswer = input.nextInt();
// check the answer
int result = Arrays.binarySearch(elements, randomElement);
int recievedInput = yourAnswer - 1;
int correctAnswer = result + 1;
if (recievedInput == result) {
System.out.println("Correct Answer!");
} else {
System.out.println("Sorry, but you need some more practice. The correct answer is " + correctAnswer + ".");
}
// close the object with Scanner class
input.close();
}
}
Its output should be like
JavaScript
$ java element
What is the atomic number of nitrogen?
Your answer: 7
Correct Answer!
$ java element
What is the atomic number of helium?
Your answer: 5
Sorry, but you need some more practice. The correct answer is 2.
But, it’s like:
JavaScript
$ java element
What is the atomic number of oxygen?
Your answer: 8
Sorry, but you need some more practice. The correct answer is -10.
$ java element
What is the atomic number of chromium?
Your answer: 0
Correct Answer!
$ java element
What is the atomic number of lithium?
Your answer: 3
Correct Answer!
How should I solve the problem?
Advertisement
Answer
You’re using Arrays.binarySearch() on the wrong type of data set. It needs to take a sorted input to work properly.