我有两节课。在第一个中,我使用Scanner
检索用户的名称,然后将其存储在名为String
的{{1}}中。然后说,我开始一个新的课程,并希望打印出来,我该怎么做呢。所以我只是把这段代码写成一个例子,这样你就可以了解我想要问的内容。我会发布这两个课程。
name
二等。
import java.util.Scanner;
public class One {
public static void main(String[] args) {
String name;
String start;
Scanner input = new Scanner(System.in);
System.out.println("Hello, what is your name?");
name = input.nextLine();
System.out.println("Hello "+name+", welcome! To ocntinue, please hit any key.");
start = input.nextLine();
if(start != null){
Two object = new Two();
}
}
}
答案 0 :(得分:5)
所以,你可能会做这样的事情: -
class One
{
private String name = "bob";
public String getName()
{
return name;
}
public static void main(String [] args)
{
One one = new One();
Two two = new Two(one);
// You could also just pass an r-value to Two, as in, Two(new One()) if you
// never require 'one' again
}
}
class Two
{
public Two(One one)
{
System.out.println("Ok " + one.getName() + ", lets start!");
}
}
发生了什么事?
main
入口点方法中创建两个类。One
的实例传递给Two
getName()
正如其他人所建议的那样,你可以传递一个字符串作为构造函数;或者,如果需要,您可以同时执行这两项操作,因为Java支持重载方法,请参阅
<强>推荐强>
请查看http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html以了解覆盖方法,以便了解如何按值传递字符串和对象引用。你现在正在做的是通过值传递one
的对象引用。可能不需要它,或者您可能希望使用界面提供限制,请参阅http://docs.oracle.com/javase/tutorial/java/concepts/interface.html
答案 1 :(得分:2)
使用构造函数传递值
public class Two {
private String value;
public Two(String a){
this.value=a;
System.out.println("Ok "+value+", lets start!");
}
//getter and setters
}
然后在创建实例时使用该构造函数
Two object = new Two(name);
答案 2 :(得分:0)
将您的值传递给两个班级constructor
。
if(start != null){
Two object = new Two(start );
}
和
public Two(String s){
System.out.println("Ok "+s+", lets start!");
}
答案 3 :(得分:0)
要编译代码,请将String name
变量移动到静态字段中:
public class One {
public static String name;
public static void main(String[] args){
// Note: The "name" variable is no longer defined here
String start; // etc
// rest of code the same
}
}
我不会告诉你这是一个很好的代码设计,但它会按照你的要求进行。
答案 4 :(得分:0)
你也会这样做
public class One {
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
retrun this.name;
}
public static void main(String[] args){
String name;
String start;
Scanner input = new Scanner(System.in);
System.out.println("Hello, what is your name?");
name = input.nextLine();
System.out.println("Hello "+name+", welcome! To ocntinue, please hit any key.");
start = input.nextLine();
if(start != null){
Two two = new Two();
two.printName(this);
}
}
class Two{
public void printName(One one){
System.out.println("" + one.getName() );
}
}