在 java 中用另一种方法更改字符串内容

change string content in another method in java

当用户用另一种方法写下他的名字而不是显示他的名字时,我正在尝试编写简单的代码 字符串名称的问题一直保持为空并且不会改变

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        String name="";
        saisir(name);
        System.out.println("your name is "+name);
}
    static String saisir (String title){
        Scanner s=new Scanner(System.in);
        System.out.println("write your name");
        String name = s.nextLine();
        return name;
    }

}

代码如下:

name = saisir(name);

或更好:

name = saisir();

并删除 title 参数,因为您不使用它。

您正在返回名称,但没有保留它。您正在传递一个标题,但没有使用它。让我们解决这两个问题。喜欢,

public static void main(String[] args) {
    String name = saisir();
    System.out.println("your name is "+name);
}
static String saisir() {
    Scanner s=new Scanner(System.in);
    System.out.println("write your name");
    return s.nextLine();
}

在Java中,方法是按值传递的,这意味着您作为参数发送的字符串不会受到方法内部更改的影响(尽管您实际上并没有更改它:P) .它使用它的参考。当您在方法内部更改它时,您实际上创建了一个新字符串,但您的实际引用仍指向初始引用。 如果您想要更改名称,您应该像建议的其他答案一样在 main() 方法中进行分配。

name = saisir();

因为你也不需要那里的参数。

这样试试

public class Main {
    public static void main(String[] args) {
        String name = "";
        name = saisir(); //set "name" equal to the String returned by saisir()
        System.out.println("your name is " + name);
    }

    static String saisir() { //there is no need for this method to take any parameters
        Scanner s = new Scanner(System.in);
        System.out.println("write your name");
        String name = s.nextLine();
        return name;
    }
}