- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 toString() 方法来打印一些私有(private)字段。但是,每当我尝试将适当类的对象发送到打印方法时,它只会打印出每个字段的默认值,无论我将它们更改为什么。任何帮助将不胜感激:) 这是带有 toString() 方法的类(它还覆盖了 getter 的另一个类)。抱歉,我编辑这篇文章的速度很慢。不熟悉这里的文本编辑器。
人员类别
public class Person
{
// Declare all the fields as strings
private String firstName = "", lastName = "", address = "", zipcode = "",
phone = ""; // There are accessors and mutators for these as well
public String toString()
{
String str = "First name: " + firstName + "...Last name: " + lastName +
"... Street address: " + address + "... Zipcode: " + zipcode +
"... Phone number: " + phone;
return str;
}
学生类(class)
public class Student extends Person
{
// declare fields that are not in Person
private String major = "";
private double gpa;
// Declare accessor and mutator methods for the fields
public String getMajor()
{
return major;
}
public void setMajor(String major)
{
this.major = major;
}
public double getGpa()
{
return gpa;
}
public void setGpa(double gpa)
{
this.gpa = gpa;
}
// Create a toString method that overrides the one in Person
public String toString()
{
String str = "First name: " + getFirstName() + "...Last name: " +
getLastName() + "... Street address: " + getAddress() +
"... Zipcode: " + getZipcode() + "... Phone number: " +
getPhone() + "... Grade point average: " + getGpa() +
"...Major: " + getMajor();
return str;
}
}
这是整个主类......其中很多都是乏味的代码,因为它是一项家庭作业,但主要思想是:“编写一个名为 CollegeList 的应用程序,声明由 4 个“常规”CollegeEmployees、3 个教员和 7 个学生组成的数组。提示用户指定将输入哪种类型的人员数据(“C”、“F”或“S”) ),或允许用户退出('Q')。当用户选择继续(即不退出)时,接受适当类型人员的数据输入。如果用户尝试输入数据超过4 名大学员工、3 名教员或 7 名学生显示错误消息。当用户退出时,在屏幕上显示一份报告,在适当的标题“大学员工”、“教职员工”或“学生”下列出每组人员。如果用户在 session 期间未输入一种或多种类型人员的数据,请在相应标题下显示相应消息。
主类
import java.util.Scanner; // Needed for Scanner class
public class CollegeList
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
// Declare the arrays of people
Person[] people = new Person[14];
// These three arrays are being made to print out the types of people
// at the end neatly
Faculty[] fArray = new Faculty[4];
Student[] sArray = new Student[7];
CollegeEmployee[] cArray = new CollegeEmployee[3];
// Prompt for users input
System.out.print("Please choose the type of person you are entering " +
"data for.\nFor a student enter \"S\"; for a faculty member " +
"enter \"F\"; for a college employee enter \"C\"; and to quit "
+ "enter \"Q\": ");
Scanner keyboard = new Scanner(System.in);
String type = keyboard.next(); // the type of person
System.out.println();
// initialize counts of persons so that user does not enter more
int facultyCount = 0;
int studentCount = 0;
int employeeCount = 0;
// initialize index of the array to 0
int index = 0;
// continue until the user enters Q or until one of the types of people
// overflows or until all 14 elements are taken up
while (!type.equals("Q") && (facultyCount <= 3) && (studentCount <= 7)
&& (employeeCount <= 4) && (index < 14))
{
if(type.equals("S") && !type.equals("Q")) // Enter info for student
{
// Give the indexes the adresses
people[index] = new Student();
sArray[studentCount] = new Student();
// Set the info
personInfo(people[index]);
studentInfo((Student)people[index]);
System.out.println("\n");
// Increment the counts
studentCount++;
index++;
}
else if(type.equals("C") && !type.equals("Q")) // Enter info for
{ // college employee
// Give the indexes the adresses
people[index] = new CollegeEmployee();
cArray[employeeCount] = new CollegeEmployee();
// Set the info
personInfo(people[index]);
employeeInfo((CollegeEmployee)people[index]);
System.out.println("\n");
// Increment the counts
employeeCount++;
index++;
}
else if(type.equals("F") && !type.equals("Q")) // enter info for faculty
{
// Give the indexes the adresses
people[index] = new Faculty();
fArray[facultyCount] = new Faculty();
// Set the info
personInfo(people[index]);
employeeInfo((CollegeEmployee)people[index]);
facultyInfo((Faculty)people[index]);
System.out.println("\n");
// increment the counts
facultyCount++;
index++;
}
System.out.print("Please enter the next person type (S, C, F, " +
"or Q): ");
type = keyboard.next();
}
// Displays error message then closes program if there was overflow
if ((facultyCount > 3) || (studentCount > 7) || (employeeCount > 4))
{
System.out.println("Too much data for one type of person. Goodbye.");
System.exit(0);
}
// Print the data for all of the college employees
System.out.println("\n\n");
System.out.println("THE COLLEGE EMPLOYEES");
for (int i = 0; i < employeeCount; i++)
{
System.out.println(cArray[i]);
System.out.println("\n");
}
// Determines if not all of the personS type was filled
if (employeeCount != 4)
{
System.out.println("There are " + (4 - employeeCount) + " employees"
+ " who are not recorded.");
}
// Print the data for all of the faculty
System.out.println("\n\n");
System.out.println("THE FACULTY");
for (int i = 0; i < facultyCount; i++)
{
System.out.println(fArray[i]);
System.out.println("\n");
}
// Determines if not all of the person type was filled
if (facultyCount != 3)
{
System.out.println("There are " + (3 - facultyCount) + " faculty "
+ "members who are not recorded.");
}
// Print the data for all of the students
System.out.println("\n\n");
System.out.println("THE STUDENTS");
for (int i = 0; i < studentCount; i++)
{
System.out.println(sArray[i]);
System.out.println("\n");
}
// Determines if not all of the person type was filled
if (studentCount != 7)
{
System.out.println("There are " + (7 - studentCount) + " students "
+ "who are not recorded.");
}
}
// prompts the user for data input that is universal to all the people
public static void personInfo(Person p)
{
Scanner keyboard = new Scanner(System.in);
System.out.print("First name: ");
String fName = keyboard.nextLine();
System.out.println();
System.out.print("Last name: ");
String lName = keyboard.nextLine();
System.out.println();
System.out.print("Street address: ");
String address = keyboard.nextLine();
System.out.println();
System.out.print("Zipcode: ");
String zipcode = keyboard.nextLine();
System.out.println();
System.out.print("Phone number: ");
String phone = keyboard.nextLine();
System.out.println();
// Sets the data accordingly
p.setFirstName(fName);
p.setLastName(lName);
p.setAddress(address);
p.setZipcode(zipcode);
p.setPhone(phone);
}
// Sets the data for student fields
public static void studentInfo(Student s)
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Grade point average: ");
double gpa = keyboard.nextDouble();
System.out.println();
System.out.print("Major: ");
String major = keyboard.next();
System.out.println();
// Set the data accordingly
s.setGpa(gpa);
s.setMajor(major);
}
// Sets the data for Faculty fields
public static void facultyInfo(Faculty f)
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Is the faculty tenured (\"yes\" or \"no)\"?");
String tenured = keyboard.next();
// set the data accordingly
switch (tenured)
{
case "yes" :
f.setTenured(true);
break;
case "no" :
f.setTenured(false);
break;
}
}
// Sets the info for CollegeEmployee fields
public static void employeeInfo(CollegeEmployee c)
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Social security number: ");
String socialSecurity = keyboard.next();
System.out.println();
System.out.print("Salary: ");
String salary = keyboard.next();
System.out.println();
System.out.print("Department name: ");
String department = keyboard.next();
System.out.println();
// Set the data accordingly
c.setSocialSecurity(socialSecurity);
c.setSalary(salary);
c.setDepartment(department);
}
}
最佳答案
您正在为每个条目创建两个 Student() 实例。您只更新 people 数组中的一个,而不是 Student 数组中的一个。
people[index] = new Student();
sArray[studentCount] = new Student();
假设您确实想将学生存储在两个数组中,请将其更改为:
Student student = new Student();
people[index] = student;
sArray[studentCount] = student;
关于java - toString() 只打印默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813891/
有没有更好的方法用 PHP 将数据输出到 html 页面? 如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西 print (''.$var.''); 或 echo "''.$v
我可以使用 java awt print 来打印文档/文件而不是使用 javax print 吗?我发现在 java awt print 中有一个选项可以使用 AttributedString 将内容
目前我通过以下方式运行 R 脚本: R --slave argument1 argument2 ... 我想知道 R 中关于如何退出脚本并发出警告的最佳实践,q() 会这样做吗? if(!file.
谁能告诉我如何编写一个程序,用 gcc 编译时打印 c ,用 g++ 编译时打印 c++? 最佳答案 #ifdef __cplusplus printf("c++\n"); #else
我需要支持在 KitKat 设备上打印,但我的目标 SDK 是 13(无法更改)。 特别是我需要打印一个 webview。 这是用于打印 webview 的 API: http://developer
我正在尝试创建一个简单的函数,其中 python 将根据您的年份输入计算年龄。我已经尝试了几种方法,但我没有运气 atm。 附:对不起,我是新手。 ame = input(" Enter your n
JavaFX 2.0 是否支持打印?我有一个文本区域,我从中获取文本然后我想打印它,但似乎没有这个功能。 当然,这里我说的是打印到打印机。 :) 最佳答案 尚不支持。作为一种解决方法,您可以使用 Ja
我试图找出printOn的重点。我查看了一些实现它的类,看起来它只是帮助打印不同数据类型的单位。这是准确的吗? 如果是这样,有人能指出我如何为我自己的类(class)实现这一点的正确方向吗?我将在可能
我无法让 IE 打印我的 Canvas (使用 excanvas 生成)...我使用的是最新版本的 excanvas。 http://dl.dropbox.com/u/997831/canvas.ht
我搜索了很多但没有人回答我的问题,我读到在这样的信号处理程序中使用 cout 是不安全的: void ctrlZHandler(int sig_num) { //SIGTSTP-18
我有兴趣打印一系列查询。我有以下代码。 start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) end = datetime.datetime(201
public class javaClass { public static void main(String [] arg) { String row1 = "A____A"
我需要写入前一行的命令,例如不带\n 的 print()。 下面是一些示例代码: a=0 print("Random string value") if a==0: print_to_prev
我有一个使用 UIKit 和 Objective C 的旧 iOS 应用程序,我目前正在将其移植到 SwiftUI 和 Swift。一切都很顺利,我喜欢 Swift 和 SwiftUI。该应用程序已经
我创建了一个求和函数,它接受一个开始编号和一个结束编号,并返回这两点之间的总和答案 def print_sum_equations(start_number,end_number):
在 Perl 6 中,print 和有什么区别? , put和 say ? 我怎么看 print 5不同,但 put 5和 say 5看起来一样。 最佳答案 put $a就像 print $a.Str
我正在使用 here 中的 getOrgChart 库,我正在尝试打印整个图表,而不仅仅是可见部分。不幸的是,当使用标准库打印功能时,它只会打印出第一部分,而我不知道如何打印整个图表(该图表相当宽,大
我制作了一个非常适合 A4 页面的 View 。现在我想打印它。请注意,我没有使用drawRect或类似的东西,只是一个带有 subview 和文本标签的普通 View 。我的问题是,我对该 View
由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是: NSImage *image =
这个问题已经有答案了: Printing a TDBGrid (4 个回答) 已关闭 6 年前。 如何在不安装或下载组件的情况下打印 DBGrid? 或者 如何将 DBGrid 的数据放入 RichE
我是一名优秀的程序员,十分优秀!