字符串值返回为空|自定义构造函数和设置值

时间:2015-04-20 14:28:44

标签: java methods constructor null return

我为我的编程课程创建了当前作业的简化版本。

我创建了一个测试程序,要求用户输入,studentName,studentName然后通过另一个类进行验证。我的最终目标是打印出一个名为toString()的方法,该方法保存用户为studentName输入的值。现在我的程序返回null,而不是studentName的值。问题是我不确定如何使用构造函数正确设置值。

如果您可以设置正确的构造函数以及正确打印用户通过命令提示符输入的值的方法,我将不胜感激!

这是包含main方法的类。注意:我可能已经声明了太多的类对象,因为我很匆忙。

    import java.util.Scanner;

public class TestMcTest
{
  TestMcTest2 test3 = new TestMcTest2();
  public static void main(String[] args)
  {
   TestMcTest test2 = new TestMcTest();
   TestMcTest2 test = new TestMcTest2();
   test2.getStudentInfo();

   System.out.println(test.toString());

  }



   public void getStudentInfo()
   {
    int valid = 0; 
    Scanner input =  new Scanner(System.in);
     do
     {
      System.out.println("Enter a name for a student");
      valid = test3.getStudentName(input.nextLine());
     }while(valid == 0);
   }
}

这是保存验证的类和toString()方法,我想用main方法调用该方法的主方法。

public class TestMcTest2
{
  private String studentName;

  public String setStudentName()
  {
    return studentName;
  }

  public int getStudentName(String studentName)
  {
   int valid = 0;
   if (studentName.length() != 0)
   {
     valid = 1;
     this.studentName = studentName;
   }
   return valid;
  }


  public String toString()
  {
   return this.studentName;

  }


}

2 个答案:

答案 0 :(得分:0)

您设置变量studentName的值,因此打印字符串的默认值,即null

TestMcTest中你做了

TestMcTest2 test = new TestMcTest2();
test.setStudentName("singhakash");

System.out.println(test.toString());

并在TestMcTest2更改

 public void setStudentName(String studentName){

    this.studentName = studentName;
 }

这将给出预期的输出。

您的方法名称与其功能相反。

答案 1 :(得分:0)

  

如果您可以设置正确的构造函数和正确打印的方法   用户通过命令提示输入的值,我会的   欣赏它!

public class TestMcTest2{
   ....
   public TestMcTest2(String s){
    this.studentName = s;
   }
}

你现在必须使用新的构造函数:

TestMcTest2 test3 = new TestMcTest2("hot name");

您可以在do-while

之后将其打印出来
System.out.println(test3.toString());

我非常确定您需要@Override方法的toString()注释。

编辑:

   @Override <- add this
     public String toString()
      {
       return this.studentName);

      }