Yes, now you want to do the actual validation on the input string. You can find the length of a string with the yourString.length();

And charAt lets you see what the char at the position supplied is, so charAt(0) would give you the first item in the string. Now you need to use some sort of statement to go through each item and check if they are one of the items you need to be in the password.

You are on the right track, however you have to check more than just the length. It might help to use a boolean and several if statements. If the length is less than 8 set the boolean to false. Also do the checks for the required chars. Then at the end if the boolean is true then display the "OK" message else the bad message.

Yes by using the or symbol (just like you did with and) in between the three calls to indexOf. But this can get messy real quick. That is why I suggested using several if statements, one for each check.

Sorry but I honestly don't understand exactly what you're saying.
I'm assuming if you're saying "a pass in boolean is 1 and a fail is -1" that I should do "input.indexOf("#")==1"
I know that boolean means true/false statement but that's all I know about it.

If you could dumb down everything you're saying to about 1 month java experience I might get it better haha

The indexOf method returns the position in the String where the target char is located or -1 if it is not found. EG in the String "hello world" the indexOf('w') call would return 6, the indexOf('h') call would return 0 and the indexOf('z') call would return -1.

valid set to true
if length is less than 8
set valid to false
else if $ not found
set valid to false
else if % not found
set valid to false
else if # not found
set valid to false
if valid
print OK message
else
print bad message