简体   繁体   中英

How can I make sure that the user did not enter his/her entire name in the First Text Field named as "First Name"

This question says ask for the 'First Name' and the 'Last Name' from the user and then show the message Welcome with the full name of the user . also make sure that the user does not enter his/her full name in the first Text Field which asks for First Name only I thought that if the user enters his/her full name in the first text field , we can know that from the fact that he/she entered a space or (' ') or not . If not we can simply show the message Welcome + full name . However it didn't work the way I thought it would ... Can somebody help me with it enter image description here

If I understand you the below will work accomplish what you need by ignoring the data after the space and asking the user for their last name.

code: public static void main(String[] args) {

    // Properties
    Scanner keyboard = new Scanner(System.in);
    String firstName, lastName

    // Ask the user for their first name
    System.out.println("What is your first name? ");
    System.out.print("--> "); // this is for style and not needed
    firstName = keyboard.next();

    // Ask the user for their last name
    System.out.println("What is your last name? ");
    System.out.print("--> "); // this is for style and not needed
    lastName = keyboard.next();

    // Display the data
    System.out.println("Your first name is : " + firstName);
    System.out.println("Your last name is : " + lastName);


}

There is actually a few ways you can do this, but if I understand your question correctly a simple way would be below, which is from http://math.hws.edu/javanotes/c2/ex6-ans.html and helped me understand Java more when I was learning it, you just would alter it to your needs.

code: public class FirstNameLastName {

public static void main(String[] args) {
    
    String input;     // The input line entered by the user.
    int space;        // The location of the space in the input.
    String firstName; // The first name, extracted from the input.
    String lastName;  // The last name, extracted from the input.
    
    System.out.println();
    System.out.println("Please enter your first name and last name, separated by a space.");
    System.out.print("? ");
    input = TextIO.getln();
    
    space = input.indexOf(' ');
    firstName = input.substring(0, space);
    lastName = input.substring(space+1);
    
    System.out.println("Your first name is " + firstName + ", which has "
                              + firstName.length() + " characters.");
    System.out.println("Your last name is " + lastName + ", which has "
                              + lastName.length() + " characters.");
    System.out.println("Your initials are " + firstName.charAt(0) + lastName.charAt(0));
    
}

}

edit: If this doesn't make sense I can give a better explanation with a better example with more detail.

More notes on similar problems. https://www.homeandlearn.co.uk/java/substring.html

The problem with your code is, that you check every single charackter and then do the if/else for every single charackter. which means if the last charackter is not a whitespace it will at the end process the else tree.

The solution is to just check once:

if(fn.contains(' '){
    //Do what you want to do, if both names were entered in the first field
}else{
    //Everything is fine
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM