Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Array reference in for loop

0 views
Skip to first unread message

tes...@hotmail.com

unread,
Aug 13, 2007, 8:00:11 PM8/13/07
to
I have a validate method in a bean class that works and now I want to
condense it into a for loop.

Here is what I have:

//firstname and lastname are declared earlier
public boolean validate()
{
boolean allOk=true;
if (firstName.equals("")) {
errors.put("firstName","Please enter your first name");
allOk=false;
}
if (lastName.equals("")) {
errors.put("lastName","Please enter your last name");
allOk=false;
}
return allOk;
}

My attempt doesnt work because I cant seem to figure out how to put
the array reference in the key part of the errors.put method:

public boolean validate()
{
boolean allOk=true;
String [] myarray = {firstname, lastname}
for(int i=0;i < myarray.length;i++)
{
if (myarray[i].equals("")) {
errors.put(myarray[i],"Please enter your " + myarray[i]);
allOk=false;
}
}
return allOk;
}


The results dont validate any of my data so I assume I have something
wrong with my array. Please advise.

GArlington

unread,
Aug 14, 2007, 6:36:42 AM8/14/07
to

Is this your actual code? Did you even try to compile it?
What does the compiler say about your line


String [] myarray = {firstname, lastname}

???
I can only guess (thanks to your selective code pasting) that
you are atempting
String [] myarray = {firstName, lastName};
or
String [] myarray = {getFirstName(), getLastName()};

IchBin

unread,
Aug 14, 2007, 12:09:37 PM8/14/07
to

Quick and dirty:

public boolean validate()
{
boolean allOk=true;

String [] myarray = {firstName, lastName,
"first Name","last Name"};


for(int i=0;i < myarray.length;i++){
if (myarray[i].equals("")) {

errors.put(myarray[i] + " Please enter your " +
myarray[i+2]);
allOk=false;
}
}
return allOk;
}

--
Thanks in Advance... http://weconsulting.org
IchBin, Philadelphia, Pa, USA http://ichbinquotations.weconsulting.org
______________________________________________________________________
'If there is one, Knowledge is the "Fountain of Youth"'
-William E. Taylor, Regular Guy (1952-)

Patricia Shanahan

unread,
Aug 14, 2007, 12:15:38 PM8/14/07
to

There are two needs for a String array, providing the labels for using
in the message and holding the input. Why not use two arrays, one for
each job?

public boolean validate()
{
boolean allOk=true;

String[] input = {firstName, lastName};
String[] labels = {"first Name","last Name"};
for(int i=0;i < input.length;i++){
if (input[i].equals("")) {
errors.put(input[i] + " Please enter your " +
labels[i]);
allOk=false;
}
}
return allOk;
}

I don't like names like "myarray", because they are often associated
with constructs that do not have a single clear purpose.

Patricia

Daniel Pitts

unread,
Aug 14, 2007, 4:21:09 PM8/14/07
to

I don't like parallel arrays myself, and I don't think this is a job
for an array actually.

public void validateHelper(String fieldName, String fieldValue, String
message) {
if (fieldValue == null || fieldValue.equals("")) {
errors.put(fieldName, fieldMessage);
}
}

public void validate() {
validateHelper("firstName", firstName, "Please enter your first
name.");
validateHelper("lastName", lastName, "Please enter your last
name.");
}


Patricia Shanahan

unread,
Aug 14, 2007, 4:31:24 PM8/14/07
to

Yes, that is a better design.

Patricia

cyprian

unread,
Aug 22, 2007, 6:55:13 AM8/22/07
to

there is nothing wrong with your array if firstname and secondname are
visible. See if the problem is with the strings you're passing the put
method. Maybe do String toPut = "the words"+myArray[i];
then make one of put's parameters toPut rather than that string
literal.

0 new messages