This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

Hi,

I am working on below challenge

http://codingbat.com/prob/p180365

The "key" array is an array containing the correct answers to an exam, like {"a", "a", "b", "b"}. the "answers" array contains a student's answers, with "?" representing a question left blank. The two arrays are not empty and are the same length. Return the score for this array of answers, giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.

i was not clear on above description.

i was not clear how below result is 6 etc. please advise

scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6

scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11

scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16

I am working on below challenge

http://codingbat.com/prob/p180365

The "key" array is an array containing the correct answers to an exam, like {"a", "a", "b", "b"}. the "answers" array contains a student's answers, with "?" representing a question left blank. The two arrays are not empty and are the same length. Return the score for this array of answers, giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.

i was not clear on above description.

i was not clear how below result is 6 etc. please advise

scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6

scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11

scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16

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

scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6

as 'a' is same in both array give +4

then a not same as c so -1

then b same as b +4

then b not same as c -1

total is 6

let me think on pseudo code and code 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;
}
```

above failing below tests. please advise

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.
```

what i supposed to do when i see question mark(?)

```
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;
}
```

something like above?

I am failing some tests. please advise

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.Above passes all tests.

any improvements or alternate approaches? please advise

"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? any improvements, alternate approaches?

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 with else if with else approach as i did ?

any specific advantage or disadvantage?

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.

simply looping the array, comparing the values at the same indices, and depending on the values, sum up the scores...