当前位置: 首页 > 知识库问答 >
问题:

调用构造函数时收到错误

温源
2023-03-14

当我在代码中进行扫描后到达此部分时,我收到此错误:

Project2_JoshuaLucas[,0,0,0x0,无效,布局=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=350,height=200]]

Project2_JoshuaLucas selection = new Project2_JoshuaLucas("", "", "", "", "", "", "", 0.00);

Object source = event.getSource();
if (source == cabin1)
{
  cabin1.setBackground(Color.darkGray);
  cabin2.setBackground(Color.gray);
  cabin3.setBackground(Color.gray);
  cabin4.setBackground(Color.gray);
  cabin5.setBackground(Color.gray);
  cabin6.setBackground(Color.gray);
  cabin7.setBackground(Color.gray);
  cabin8.setBackground(Color.gray);
  cabin9.setBackground(Color.gray);
  cabin10.setBackground(Color.gray);
  suite1.setBackground(Color.red);
  suite2.setBackground(Color.red);

  System.out.println("Your choice is Cabin 11-1, would you like to designate this as your room?");
  info1 = scan_in.nextLine();
  info1 = info1.toLowerCase();

 if ( info1.equals ("yes") || info1.equals ("y"))
{
   continues=true;   
   System.out.println("Please enter the number of people in your cabin (*Maximum number of people is 2*)");
   cabin_people = scan_in.nextInt();
   scan_in.nextLine();


   while(continues)
   {
     switch (cabin_people)
     {
     case 1:
       System.out.println("There is one passenger within the cabin. (You will pay an EXTRA 45% because of the empty passenger slot)");
       continues=false;
       onepassenger=true;
       break;
     case 2:
       System.out.println("There are two passenger within this cabin.");
       continues=false;
       twopassenger=true;
       break;
     default:
       System.out.println("Please try again. Remember, the maximum amount of passengers allowed is 2.");
       System.out.println("How many passengers are staying within this cabin?");
       cabin_people=scan_in.nextInt();
       scan_in.nextLine();
       continues=true;

 }//Closes the Switch
 }//Closes the while(continues) loop

 while(onepassenger)
 {
   System.out.println("Please state your FIRST name: ");
   fname1=scan_in.nextLine();
   System.out.println();
   System.out.println("Please state your LAST name: ");
   lname1=scan_in.nextLine();

   onepassenger=false;
   Project2_JoshuaLucas passenger1 = new Project2_JoshuaLucas (fname1, lname1, "", "", "", "", "", 0.00);
   System.out.println(passenger1);
 } //Closes while(1passenger)

我该怎么解决这个问题?

共有2个答案

许丁雷
2023-03-14

java中的每个类都扩展了对象类:

public class Example{ //extends the default class Object

}

>

其中之一是toString()方法

当您通过调用toString()创建一个类时,实际上是在使用Object class中的方法,默认情况下,该方法返回一个表示类本身的字符串。

  • 方式1)

如果要更改toString()以返回所需内容,则必须@Override[Override]它。java就是这样做的。所以:

    public class Example{

        @Override
        public String toString(){

         return "I am naughty";

       }

     }

>

或者,您可以向类中添加自己的方法:

 public class Example{


   public String  getName(){

     return name;
   }


   public  String getLastName(){

     return lastName;

  }
 }
许丁雷
2023-03-14

您的toString()方法正在打印对象数据中的所有内容。

 类似资料:
  • 构造函数与析构函数是自动调用的。这些函数的调用顺序取决于执行过程进入和离开实例化对象范围的顺序。一般来说,析构函数的调用顺序与构造函数相反。但图6.9将介绍对象存储类可以改变析构函数的调用顺序。 全局范围中定义的对象的构造函数在文件中的任何其他函数(包括 main)执行之前调用(但不同文件之间全局对象构造函数的执行顺序是不确定的)。当main终止或调用exit函数时(见第18章)调用相应的析构函数

  • 有什么想法为什么我可能会看到这门课的以下消息吗? 消息 我不知道为什么这行不通。当我移除super()时,错误就会消失,所以这似乎会引起一些问题。

  • 第二个构造函数应该调用第一个构造函数,但却给了我“递归构造函数调用”错误。 我明白这个错误的意思,只是不明白递归在哪里。第一个contructor将作为参数,而应该是该类型的数组。我错过了什么? 多谢了。

  • 为什么下面没有编译: 如有需要,请提供更多详细信息: 我想将tmp传递给父构造函数

  • 问题内容: 以下代码向我返回错误信息: 我不明白。我的代码中的构造函数是第一条语句。我究竟做错了什么? 问题答案: 构造函数名称必须与类名称相同,因此请将类名称更改为或将构造函数名称更改为。 示例 (请注意,在Java中通常第一个字母是大写字母) :

  • 问题内容: 构造函数何时被调用? 创建对象之前。 在对象创建期间。 创建对象之后。 问题答案: 分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但是其代码在对象超类的构造函数代码之后执行。