我有两个方法,第一个创建一个字符串,然后我想在第二个方法中使用该字符串。
当我研究这个时,我遇到了在方法之外创建字符串的选项,但是,这在我的情况下不起作用,因为第一种方法以几种方式更改字符串,我需要最终产品第二种方法。
代码:
import java.util.Random;
import java.util.Scanner;
public class yaya {
public static void main(String[] args) {
System.out.println("Enter a word:");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
Random ran = new Random();
int ranNum = ran.nextInt(10);
input = input + ranNum;
}
public void change(String[] args) {
//more string things here
}
}
答案 0 :(得分:3)
您需要从第一个方法返回修改后的字符串,并将其传递给第二个方法。假设第一个方法替换了字符串中的所有实例或'r'和't':(例如):
public class Program
{
public static String FirstMethod(String input)
{
String newString = input.replace('r', 't');
return newString;
}
public static String SecondMethod(String input)
{
// Do something
}
public static void main(String args[])
{
String test = "Replace some characters!";
test = FirstMethod(test);
test = SecondMethod(test);
}
}
在这里,我们将字符串传递给第一个方法,该方法返回(返回)修改后的字符串。我们用这个新值更新初始字符串的值,然后将其传递给第二个方法。
如果字符串与相关对象紧密相关并且需要在给定对象的上下文中传递和更新,那么将它作为Bohemian描述的实例变量更有意义。
答案 1 :(得分:2)
创建一个实例变量:
public class MyClass {
private String str;
public void method1() {
// change str by assigning a new value to it
}
public void method2() {
// the changed value of str is available here
}
}
答案 2 :(得分:0)
将第二个方法中的修改后的字符串作为参数传递。
答案 3 :(得分:0)
创建一个静态变量,在该方法中使用相同的变量。
答案 4 :(得分:0)
public class MyClass {
public string method1(String inputStr) {
inputStr += " AND I am sooo cool";
return inputStr;
}
public void method2(String inputStr) {
System.out.println(inputStr);
}
public static void main(String[] args){
String firstStr = "I love return";
String manipulatedStr = method1(firstStr);
method2(manipulatedStr);
}
}
答案 5 :(得分:0)
既然你提到两个方法都应该能够独立调用,你应该尝试这样的事情:
public class Strings {
public static String firstMethod() {
String myString = ""; //Manipulate the string however you want
return myString;
}
public static String secondMethod() {
String myStringWhichImGettingFromMyFirstMethod = firstMethod();
//Run whatever operations you want here and afterwards...
return myStringWhichImGettingFromMyFirstMethod;
}
}
因为这两个方法都是静态的,所以可以通过名称在main()中调用它们而不创建对象。顺便问一下,你能更具体地说明你想做什么吗?