tags:

views:

37

answers:

3

Hello guys, I'm writing a program which allows the user to input his data then outputs it. Its 3/4 correct but when it arrives at outputting the address it only prints a word lets say only 'Archbishop' from 'Archbishop Street'. How do I fix this?

Thanks

    import java.util.*;

class MyStudentDetails{
    public static void main (String args[]){
        Scanner s = new Scanner(System.in);
        System.out.println("Enter Your Name: ");
        String name = s.next();
        System.out.println("Enter Your Age: ");
        int age = s.nextInt();
        System.out.println("Enter Your E-mail: ");
        String email = s.next();
        System.out.println("Enter Your Address: ");
        String address = s.next();


        System.out.println("Name: "+name);
        System.out.println("Age: "+age);
        System.out.println("E-mail: "+email);
        System.out.println("Address: "+address);
    }
}
+2  A: 

Default delimiter of Scanner is whitespace. Check javadoc for how to change this.

Raghuram
+3  A: 

Instead of using System.in and System.out directly, use the Console class - it allows you to display a prompt and read an entire line (thereby fixing your problem) of input in one call:

String address = System.console().readLine("Enter your Address: ");
Michael Borgwardt
Any other simple way, as I have not yet learned about the Console class?
Bonett09
@Bonett09: Well, now you've learned about it. It's actually in some ways simpler than using the input and output streams directly.
Michael Borgwardt
+1  A: 

I would use Scanner#nextLine opposed to next for your address attribute.

This method returns the rest of the current line, excluding any line separator at the end.

Since this returns the entire line, delimited by a line separator, it will allow the user to enter any address without any constraint.

Anthony Forloney