我很难理解和实现构造函数,正在寻找一些指导

时间:2018-10-31 15:49:57

标签: java

我正在学习构造函数,但是我观看的视频似乎无济于事,我在Google上找到的所有内容似乎都以一种高级的方式对其进行了描述。

我想编写一个简单的程序,它接受两个输入,一个名称(字符串)和一个id(整数),然后将其输出为“ id”-“ name”。例如:

01 - hello

这是我要修复的程序:

import java.util.Scanner;

public class ConstructorTest {
    public static void main(String[] args) {
        ConstructorTest();
        toString(null);
    }

    //Constructor
    public ConstructorTest(){
        Scanner name = new Scanner(System.in);
        Scanner id = new Scanner(System.in);
    }

    // Method
    public String toString(String name, int id) {
        System.out.print(id + " - " + name);
        return null;
    }
}

我得到的错误是我的方法和构造函数未定义。

2 个答案:

答案 0 :(得分:3)

构造函数创建(“构造”)新对象。然后,您可以针对该对象调用方法。

这是一个简单的对象:

public class MyObject {
  private int id;
  private String name;
  public MyObject(int id, String name) {
    this.id = id;
    this.name = name;
  }
  // Other methods here, for example:
  public void print() {
    System.out.println(id + " " + name);
  }
}

您将这样称呼此构造函数:

MyObject thing = new MyObject(1, "test");

然后您可以像这样调用其方法:

thing.print();

因此,在您的示例中,您要在主方法中执行的操作是首先提示用户输入ID和名称,然后使用构造函数创建对象,然后在构造函数上调用方法。

public class ConstructorTest {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    // get the id and name from the scanner (I would suggest using prompts)
    String name = in.nextLine();
    int id = in.nextInt();

    // create an object:
    ConstructorTest myObject = new ConstructorTest(id, name);

    // call the method:
    String myString = myObject.toString();

    // print the result:
    System.out.println(myString);
  }

  // private variables, effectively the "properties" stored by the object:
  private int id;
  private String name;

  // constructor:
  public ConstructorTest(int id, String name) {
    this.id = id;
    this.name = name;
  }

  // method
  @Override // because this is a method in java.lang.Object and we're overriding it
  public String toString() {
    return id + " - " + name;
  }
}

答案 1 :(得分:2)

尝试一下:

import java.util.Scanner;

public class ConstructorTest {

    private int id;
    private String name;

    public static void main(String[] args) {
        String name = args[0];
        int id = Integer.valueOf(args[1]);
        ConstructorTest ct = new ConstructorTest(name, id);
        System.out.println(ct);
    }

    public ConstructorTest(String n, int i) {
        this.id = i;
        this.name = n;
    }

    // Method
    public String toString() {
        return String.format("%d - %s", id, name);
    }
}

永远不要将I / O放在构造函数中。