-1

Hi,
I have done this code to learn ArrayList. I keep getting errors. Basically I want to accumulate names in list and when user types 'n' at prompt, it prints out names. What is wrong?

package mtangoo;

import java.util.ArrayList;
import java.util.Scanner;

public class MainClass {
    public static void main(String args[]){
        Listed jobject = new Listed();

    }
    Listed lst = new Listed();
}

class Listed{
    Scanner getValues = new Scanner(System.in);
    ArrayList<String> peopleList = new ArrayList<String>();
    //looping
    while (true){
        System.out.println("Please Enter the Name:");
        String name = getValues.nextLine();
        peopleList.add(name);
        System.out.println("Continue? y/n");
        if(getValues.nextLine()=="n"){
            break;
        }//endif
        else{
            continue;
        }
    }

        //loop finished
        for(int i = 0; i<peopleList.size();i++){
            System.out.println(peopleList.get(i));
        }

}
6
Contributors
20
Replies
21
Views
7 Years
Discussion Span
Last Post by Stefano Mtangoo
Featured Replies
  • 1

    It [i]might[/i] help to know what these nebulous "errors" are. [i]complete[/i] error message with stack traces (where applicable), please. Read More

1

It might help to know what these nebulous "errors" are. complete error message with stack traces (where applicable), please.

0

I see one thing that could be a problem, getValues.nextLine()=="n" will (should) always return false, because it compares the memory addresses, so you should replace it with getValues.nextLine().equals("n")

0

I changed the code to match as per sciwizeh but still persists. Here is the error (I use easy eclipse by the way)
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at mtangoo.MainClass.main(MainClass.java:7)

0

There is more than that. That occurs when you try to execute a project within Eclipse that hasn't been successfuly compiled yet. It would definately help to have the compilation messages.

-1

But If I write hello world program and run it, all goes well. Also eclipse complains there is ''Syntax error on token ";" , { expected after this token"

So what is that? As far as I can see, all is fine.

0

Then that is the compilation error. On which line does that occur.

But I can tell you, that most of the class defination of "Listed" needs to be contained within a Method and not directly under the class.

Edited by masijade: n/a

0

Your main problem lies in understanding the operation of subclasses in OOP. Subclasses are templates for creating objects which do not exist in memory until a new instance is created and given a variable name. Then the code will exist but still needs to be called for it to do anything!

Your create an instance of the class in your main class using;

Listed lst = new Listed();

This creates the class and its routines but does not instruct it to do anything! You need to call a method on lst to invoke the code but before you can do this you will have to create one.

If the code where contained in a method (perhaps loadData()) you could then use;

lst.loadData();

where you have

class Listed{
public void loadData(){
      your lines 15 to 34
};
0

Thanks alot Sir! It helped me fix alot.
The program now runs but it keep asking names and even when I press 'n' it continues. How to break out of the loop when user presses n?

Thanks buddies

0

Well, since it's difficult to see over your shoulder, perhaps you should post the current version of the code.

0

here it is

package mtangoo;

import java.util.ArrayList;
import java.util.Scanner;

public class MainClass {
    public static void main(String args[]){
    Listed lst = new Listed();
    lst.testArrayList();
}
}//end class

class Listed{
    public void testArrayList(){
        Scanner getValues = new Scanner(System.in);
        ArrayList<String> peopleList = new ArrayList<String>();
        //looping
        while (true){
            System.out.println("Please Enter the Name:");
            String name = getValues.nextLine();
            peopleList.add(name);
            System.out.println("Continue? n to end ");
            if(getValues.equals("n")){
                break;
            }//endif
            else{
                continue;
            }
        }

        //loop finished
        for(int i = 0; i<peopleList.size(); i++){
            System.out.println(peopleList.get(i));
        }

}
}//end class
0

You are comparing a Scanner object with a String object.

I thought scanner object returns a string (assumption from printing hello world) :shock:

So what can I do to compare what user enters with string?

0

Use getValues().nextLine().equals("n") instead. The Scanner name is confusing BTW, just name it scanner instead of getValues which is more appropriate for a method name.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.