Как строка в основном методе ссылается на someText в другом методе?

#java

#java

Вопрос:

Я пытаюсь сначала вывести строку, подобную этой:

Hello -

тогда мне нужно, чтобы, например, если я напишу, Jane это выводило:

Hello - - Jane -

правильный ли этот код? Если нет, что я сделал не так и что на самом деле делает этот код?

Спасибо

 public class myClass { 
   public static void main(String[] args) { 
     String a = new String("Hello"); 
     addHyphen(a); 
     System.out.println(a); 
} 


public static void addHyphen(String someText) { 
   someText = "-"   someText   "-"; 
   } 
}
  

Комментарии:

1. Ваша функция не принимает никаких входных данных, так где вы будете вводить «Джейн»? В настоящее время addHyphen() просто вернет -Hello-

2. о, я понимаю, так что мне нужно было бы просто попросить пользователя ввести?

3. Я обновил свой ответ @ppc, обязательно добавьте эти изменения в свой код при его запуске

Ответ №1:

Я думаю, вы ищете что-то вроде этого:

 public class Main
{
    public static void main(String[] args) {
    String a = "Hello"; 
     addHyphen(a); 
    }

   public static void addHyphen(String someText) { 
   someText = "-"   someText   "-"; 
   System.out.println(someText); 
   } 
}
  

Ответ №2:

Если вы хотите распечатать пробел, за которым следует дефис после переданной строки addHyphen() , тогда вы можете сделать что-то вроде этого:

 public static String addHyphen(String someText) { 
    return someText   " -"; 
}
  

Также обратите внимание, что эта функция возвращает строку, поэтому вам нужно изменить свой код в main() :

 String a = new String("Hello");  
System.out.println(addHyphen(a)); 
  

Это просто возвращает строку обратно с добавлением дефиса к вызывающей функции.

ПРИМЕЧАНИЕ: если вы хотите ввести строку в качестве входных данных, вам нужно использовать Scanner класс. Код для получения ввода строкового объекта будет:

 Scanner scan = new Scanner(System.in);
System.out.println(“Input a String:”);
String str = scan.nextLine();
  

Обратите внимание, что вам необходимо импортировать java.util.Scanner для использования Scanner класса

Ответ №3:

someText Аргумент ограничен областью действия addHyphen метода; выполняемое вами присваивание не отображается вне метода. Вы можете изменить метод, чтобы вернуть a String , а затем присвоить этому результату a .

Ответ №4:

Я рекомендую вам изучить область видимости, sometext не могу сохранить ее значение. Он всегда будет иметь new значение всякий раз, когда его called . Либо вам нужно изменить scope переменные, либо вы можете сделать что-то вроде этого:

 public class myClass
{
    public static void main(String[] args) 
    {
        String a = "Hello"; 
        String b = "Jane";
        System.out.println( addHyphen(a));
        System.out.println( addHyphen(a)  addHyphen(b)); 
    }

    public static String addHyphen(String someText) 
    { 
        return  " -"   someText   "-"; 
    } 
}