At Percona’s web store you can order full Percona Database Performance Audit in minutes. Find out the health of your database, and how to improve it. Pay online with a credit card. Improve your database performance now!
Become a Premium Member and unlock a new, free course in leading technologies each month.
Add your voice to the tech community where 5M+ people just like you are talking about what matters.
giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.
simply looping the array, comparing the values at the same indices, and depending on the values, sum up the scores...i think i got it now
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else{
count=count-1;
}
}
return count;
}
Expected Run
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6 6 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11 11 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16 16 OK
scoreUp(["a", "a", "b", "b"], ["?", "c", "b", "?"]) → 3 1 X
scoreUp(["a", "a", "b", "b"], ["?", "c", "?", "?"]) → -1 -4 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "b"]) → 7 6 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "?"]) → 3 1 X
scoreUp(["a", "b", "c"], ["a", "c", "b"]) → 2 2 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "a", "c", "a", "c"]) → 4 4 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "a", "c"]) → 6 4 X
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "c", "c"]) → 11 9 X
scoreUp(["a", "b", "c"], ["a", "b", "c"]) → 12 12 OK
other tests
X
"?" representing a question left blank.this will appear in the "answers" array. Therefore the following
(!key[i].equals("?"))
is not necessary. Your errors occur when there is a "?" in the answers. When it is found you add -1. That is wrong.
The challenge states
"?" representing a question left blank.
this will appear in the "answers" array. Therefore the following
(!key[i].equals("?"))
is not necessary. Your errors occur when there is a "?" in the answers. When it is found you add -1. That is wrong.
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else if(key[i].equals("?")){
count=0;
}else if(answers[i].equals("?")){
count=0;
}else{
count=count-1;
}
}
return count;
}
Expected Run
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6 6 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11 11 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16 16 OK
scoreUp(["a", "a", "b", "b"], ["?", "c", "b", "?"]) → 3 0 X
scoreUp(["a", "a", "b", "b"], ["?", "c", "?", "?"]) → -1 0 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "b"]) → 7 8 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "?"]) → 3 0 X
scoreUp(["a", "b", "c"], ["a", "c", "b"]) → 2 2 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "a", "c", "a", "c"]) → 4 4 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "a", "c"]) → 6 3 X
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "c", "c"]) → 11 8 X
scoreUp(["a", "b", "c"], ["a", "b", "c"]) → 12 12 OK
other tests
X
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else if(key[i].equals("?")){
count=0;
}else if(answers[i].equals("?")){
count=count+0;
}else if(!answers[i].equals(key[i])){
count=count-1;
}
}
return count;
}
something like above."key" array is an array containing the correct answers to an examTherefore a "?" will never be found in the key array. So,
(!key[i].equals("?"))
and
else if(key[i].equals("?")){
count=0;
are not necessary.count=count+0;
That is confusing for the reader. You could just use
continue;
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}/*else if(key[i].equals("?")){
continue;
}*/else if(answers[i].equals("?")){
count=count+0;
}else if(!answers[i].equals(key[i])){
count=count-1;
}
}
return count;
}
above looks ok?It looks ok, but you could clean it up to improve readability.
public int scoreUp(String[] key, String[] answers) {
int count = 0;
for(int i=0;i<key.length;i++){
if(answers[i].equals("?"))continue;
if(key[i]==answers[i]){
count = count + 4;
}else count--;
}
return count;
}
If you are experiencing a similar issue, please ask a related question
Join the community of 500,000 technology professionals and ask your questions.