On Nov 26, 4:41 pm, MorneDV <[email protected]> wrote:
> Can someone help please?
>
> I just started the J2SE online training cource.
> I have a problem with the homework part in the control structure
> section.The homework is to modify the MyForLoopProject project and use
> the while loop.
> The code works correctly if you type a valid name listed in the array.
> When you type an name not listed in the array I get an error...instead
> of displaying ("noname" is not found)
> Error:
>  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
> 8
>  at MyOwnWhile.main(MyOwnWhile.java:26)
> Java Result: 1
> BUILD SUCCESSFUL (total time: 6 seconds)
>
> Code:
> import javax.swing.JOptionPane;
>
> public class MyOwnWhile {
>
>     /** Creates a new instance of MyOwnWhile */
>     public MyOwnWhile() {
>     }
>
>     /**
>      * @param args the command line arguments
>      */
>     public static void main(String[] args) {
>         // Declare and initialize String array variable called names.
>         String names []=
> {"Beah","Bianca","Lance","Belle","Nico","Yza","Gem","Ethan"};
>
>         // This is the search string we are going to use to search the
> array.
>         String searchName = JOptionPane.showInputDialog("Enter either
> \"Yza\" or \"noname\"!");
>
>         // Declare and initialize boolean primitive type variable
> calld foundName.
>         boolean foundName =false;
>
>         int i=0;
>         while (i<names.length){
>         i++;
I think, the issue lies with above increment. In the comparison below,
it compares the next index against searchName. Then, in the final
iteration, it tries to access the last index + 1, causing an
ArrayOutOfBoundsException.

I suggest the increment be moved to the end of the while loop. Like:
        while (i<names.length){
            if (names [i ].equals(searchName)){
                foundName =true;
                break;
            }
            i++; // Moved.
        }
>
>             if (names [i ].equals(searchName)){
>                 foundName =true;
>                 break;
>             }
>         }
>
>         // Display the result
>         if (foundName)
>             JOptionPane.showMessageDialog(null, searchName + " is
> found!");
>
>         else
>             JOptionPane.showMessageDialog(null, searchName + " is not
> found!");
>
>     }
>
>
>
> }

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en

Reply via email to