-1

I want the user to enter a lower case b and the program recognizes that the b is lower case, and switch it to an upper case B. Since you cannot edit Strings during run time, how can I use a separate method from the main method in order to assign "name" to "name2". Once I try to print out "name2" after the method changes it, the compiler claims name2 hasn't been initialized even though it has been in a separate class.

I've tried initializing name2 as name2=""; so the compiler doesn't say "name2 hasn't been initialized once I try to print name2 to console, however, you cannot redefine a String during run time.

import java.util.Scanner;

public class Runner
{ 
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        String name;
        String name2;


        TextArguments test1 = new TextArguments();

        System.out.println("Please enter a lower case b");
        name = input.nextLine();


        test1.test(name,name2);




        System.out.println(name2);
    }
}






public class TextArguments
{
    public String test(String name, String name2)
    {                               
        if(name == "b") 
        {
           name2 = "B";
        }
        else
        name2 = name;

        return name2;
    }
}

Expected results:

Enter a lowercase b. b B

Actual Results:

test1.test(name,name2); ("name2 might have no been initalized")
Matt M
  • 1
  • 1

1 Answers1

-1

Parameters are inputs to a function. You want to return the string so you can get it back out of the function.

Use:

name2 = test1.test(name);

and:

public String test(String name)
{                    
    String name2;           
    if(name == "b") 
    {
         name2 = "B";
    // etc
user253751
  • 57,427
  • 7
  • 48
  • 90