Hey there, this is my first post here and I'm in the need of some real help.


I've written a basic password verifier, which checks to see if what you type in is the same as the default stored password, but i continually get a compile error.

import java.util.Scanner;

public class PasswordVerifier
{
	public static boolean isValid(String userPass)
		{
			/**
			 * This is the default stored password
			 */
			
			// Password stored by default is "cool"
			
			boolean goodSoFar = true; // Flag
			int index = 0;				  // Loop control variable
			
			// Is the string the correct length?
			if (userPass.length() != 4)
				goodSoFar = false;
				
				
			// Test to see if the characters match the password
			while (goodSoFar && index < 4)
			{
				if (!Character(userPass.charAt(index == 'c')))
					goodSoFar = false;
				index++;
				if (!Character(userPass.charAt(index == 'o')))
					goodSoFar = false;
				index++;
				if (!Character(userPass.charAt(index == 'o')))
					goodSoFar = false;
				index++;
				if (!Character(userPass.charAt(index == 'l')))
					goodSoFar = false;there 
				index++;
			
			//results are returned
			return goodSoFar;
		}
}
}

And then here is my driver class

import java.util.Scanner;
 
public class PasswordDriver
{

public static void main(String[] args)
{
	PasswordVerifier PW = new PasswordVerifier();
	String user; // To hold a user pass
	
	
	while(user != "")
		{
			System.out.println("Please enter a password containing letters and lowercase only, or nothing to end");
			//create a scanner object
			Scanner keyboard = new Scanner(System.in);
			
			//get user pass
			user = keyboard.nextLine();
			
			//Determine if the password is valid.
			if (PW(user))
				{
					System.out.println("That is a valid password");
				}
			else
				{
					System.out.println("That is not the proper password or format");
					System.out.println("Here is an example: cool");
				}
		}
}
}

The error i get when I'm compiling is

PasswordVerifier.java:30: charAt(int) in java.lang.String cannot be applied to (boolean)
if (!Character(userPass.charAt(index == 'c')))
^
PasswordVerifier.java:33: charAt(int) in java.lang.String cannot be applied to (boolean)
if (!Character(userPass.charAt(index == 'o')))
^
PasswordVerifier.java:36: charAt(int) in java.lang.String cannot be applied to (boolean)
if (!Character(userPass.charAt(index == 'o')))
^
PasswordVerifier.java:39: charAt(int) in java.lang.String cannot be applied to (boolean)
if (!Character(userPass.charAt(index == 'l')))

could someone please help me out, i've tried multiple variances and fixes, but alas... none work for me. Thanks everyone!

it needs to be changed to this format

if (userPass.charAt(index) == 'c')

but you are making it hard, you can do this

if(userPass.startsWith("cool")){
return false;
}

startsWith? so "coolblahblahblah" will be true too? not sure that sounds totally secure, but yeah, the compiler error is as stated above.

I think you have misplaced the parenthesis:

This:
if (!Character(userPass.charAt(index == 'c')))

Should be:
if (!Character(userPass.charAt(index) == 'c'))

You could also try:

goodSoFar = userPass.equals("cool");
return goodSoFar;

thanks dickersonka... that fixed the compile issue for the constructor, but in the drive i'm now getting the following error, yet i see nothing wrong =\


symbol : method PW(java.lang.String)
location: class PasswordDriver
if (PW(user))

You already have the "PasswordVerifier" so you now want to use the methods within it.

PW.isValid(user)
This article has been dead for over six months. Start a new discussion instead.