javakook
javakook

Reputation: 113

having trouble compling this code for a starwars name generator

I need to use first three letters of actual first name + first two letters of actual last name, and first two letters of mother's maiden name + first three letters of birth city. I also need to have the first letter be capitalized. Using toUpperCase() and toLowerCase(). Thanks!

import java.util.Scanner;

public class Assignment2
{
    public static void main(String[] args) 
    {
    System.out.printf("Enter your first name: ");
    /* This should be string as your gettting name*/
    String firstname = input.nextLine(); 
    firstname = firstname.substring(0, 1).toUpperCase() + firstname.substring(1);
     /* Don't need new variable use same and that also should be string. */
    System.out.printf("Enter your last name: ");

    String lastname = input.nextLine();
    lastname = lastname.substring(0,2). toUpperCase() + lastname.substring(1);

    System.out.printf("Enter your mother's maiden name: ");
    String mothersname = input.nextLine();
    mothersname = mothersname.substring(0,2);

    System.out.printf("Enter the name of the city in which you were born: ");
    String cityname = input.nextLine();
    cityname = cityname.substring(0,3);

    String StarWarsName = firstname+lastname+mothersname+cityname;
    System.out.println("May the force be with you, " + StarWarsName );
}

  }

//* Updated code 
import java.util.Locale;
import java.util.Scanner;

public class Assignment2
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        System.out.printf("Enter your first name: ");
        String firstname = input.nextLine(); 
        firstname = firstname.substring(0, 1).toUpperCase() + firstname.substring(1).toLowerCase();

    System.out.printf("Enter your last name: ");
    String lastname = input.nextLine();
    lastname = lastname.substring(0,1). toUpperCase() + lastname.substring(1).toLowerCase(); 

    System.out.printf("Enter your mother's maiden name: ");
    String mothersname = input.nextLine();
    mothersname = mothersname.substring(0,2);

    System.out.printf("Enter the name of the city in which you were born: ");
    String cityname = input.nextLine();
    cityname = cityname.substring(0,3);

    String StarWarsName = firstname+lastname+" "+mothersname+cityname;
    System.out.println("May the force be with you, " + StarWarsName );
}

  }

Upvotes: 0

Views: 1498

Answers (2)

Panther
Panther

Reputation: 3339

Corrected the code and explained the changes in comments. Go through comments also. Don't just copy this code.

 import java.util.Scanner;

public class test1
{
    public static void main(String[] args) 
    {
     Scanner input = new Scanner();
    System.out.printf("Enter your first name: ");
    /* This should be string as your gettting name*/
    String firstname = input.nextLine();
     /* Don't need new variable use same and that also should be string. */
    firstname = firstname.substring(0,1);
    System.out.printf("Enter your last name: ");

    String lastname = input.nextLine();
    lastname = lastname.substring(0,2);

    System.out.printf("Enter your mother's maiden name: ");
    String mothersname = input.nextLine();
    mothersname = mothersname.substring(0,1);

    System.out.printf("Enter the name of the city in which you were born: ");
    String cityname = input.nextLine();
    cityname = cityname.substring(0,2);

    String StarWarsName = ( "firstname"  + "lastname " + "mothersname " + "cityname"); 
    System.out.println("May the force be with you, " + StarWarsName );
}

  }

Upvotes: 1

SatyaTNV
SatyaTNV

Reputation: 4135

firstname cannot be resolved to a variable

  1. You didn't declare firstname. Not only firstname you didn't declare lastname, mothersname, cityname. So you should declare all. Those should be String.

  2. You didn't create Scanner object. Create Scanner class object.

    Scanner input = new Scanner(System.in);
    
  3. Next change. You declared cityname as two times and as inttype. But nextLine() returns String not int.

    String cityname = input.nextLine();//returns String, not int
    cityname = city.substring(0,3);//returns the first 3 characters as String, not int
    

String#substring() returns String not int. So check the entire code.

  1. Change

    String StarWarsName = ( "firstname"  + "lastname " + "mothersname " + "cityname");
    

to

   String StarWarsName = firstname+lastname+" "+mothersname+cityname;

All these are variables not values. So don't put in double quotes.

Edit: Capitalize the first letter of firstname

   firstname = firstname.substring(0, 1).toUpperCase() + firstname.substring(1).toLowerCase();

Upvotes: 0

Related Questions