Java 字符串未显示,打印“空”

Java 字符串未显示,打印“空”,java,Java,我今天刚开始学习Java,请原谅我的业余错误。问题是,它没有显示每个人最喜欢的颜色,而是显示“null”,我在Pawn中有编码经验,所以我猜我要么没有正确创建字符串,要么就是没有填充字符串 谢谢 我尝试过这些代码,但得到的是“null”而不是每个人最喜欢的颜色 import java.io.*; public class Employee { String name; int age; String designation; String favoriteColor;

我今天刚开始学习Java,请原谅我的业余错误。问题是,它没有显示每个人最喜欢的颜色,而是显示“null”,我在Pawn中有编码经验,所以我猜我要么没有正确创建字符串,要么就是没有填充字符串

谢谢

我尝试过这些代码,但得到的是“null”而不是每个人最喜欢的颜色

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   String favoriteColor;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   public void empFavoriteColor(String empColor) {
       favoriteColor = empColor;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
      System.out.println("Favorite color:" + favoriteColor);
   }
}

您在empFavoriteColor之前调用printEmployee,因此打印时字符串为空。

您需要调用printEmployee;在empFavoriteColor之前,如下所示:

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");
      Employee empThree = new Employee("Alex Johnson");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.empFavoriteColor("Green");
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.empFavoriteColor("Blue");
      empTwo.printEmployee();

      empThree.empAge(16);
      empThree.empDesignation("Software Developer" );
      empThree.empSalary(250);
      empThree.empFavoriteColor("Orange");
      empThree.printEmployee();
   }
}

在调用打印内容的方法后,您将设置每一个的颜色。在设置之前,颜色将为null。一些代码样式问题:empAge->setAge等。与其使用这些设置函数,不如在构造函数中初始化字段。这些字段应该是私有的,您应该为它们提供getter和setter。@khelwood谢谢。dyukha感谢您的更正,我是一个完全的新手,所以我不知道您刚才说了什么,但当我更好地理解Java后,我会回到您的评论中。@DoniSmith您可以接受您找到的最佳答案。Getter/Setter:关于构造函数:您可以并且可能应该以与name相同的方式初始化其他字段。
import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");
      Employee empThree = new Employee("Alex Johnson");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.empFavoriteColor("Green");
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.empFavoriteColor("Blue");
      empTwo.printEmployee();

      empThree.empAge(16);
      empThree.empDesignation("Software Developer" );
      empThree.empSalary(250);
      empThree.empFavoriteColor("Orange");
      empThree.printEmployee();
   }
}