2

我有两节课。在第一个中,我使用Scanner来检索用户名,然后将其存储在一个String被调用的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();
        }

    }
}

二等。

public class Two {
    public Two() {
        System.out.println("Ok "+One.name+", lets start!");
    }
}
4

5 回答 5

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!");
  }
}

到底是怎么回事?

  1. main在入口点方法中创建两个类。
  2. 将实例传递One给构造函数Two
  3. 两个然后打电话getName()

正如其他人所建议的那样,您可以将字符串作为构造函数传递;或者,如果需要,您可以同时执行这两项操作,因为 Java 支持重载方法,请参见

建议

查看http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html以了解覆盖方法,以便您了解如何按值传递字符串和对象引用。您现在正在做的是one按值传递对象引用。它可能不需要,或者您可能想使用接口提供限制,请参阅http://docs.oracle.com/javase/tutorial/java/concepts/interface.html

于 2013-04-19T14:14:26.243 回答
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);
于 2013-04-19T14:14:59.527 回答
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
    }
}

我不会告诉你这是很好的代码设计,但它可以满足你的要求。

于 2013-04-19T14:15:26.783 回答
0

将您的价值传递给 Two 类constructor

if(start != null){
        Two object = new Two(start );
    }

public Two(String  s){

    System.out.println("Ok "+s+", lets start!");

}
于 2013-04-19T14:12:10.057 回答
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() );
           }

    }
于 2013-04-19T14:24:19.107 回答