Я сталкиваюсь с проблемой при использовании этого конструктора - PullRequest
0 голосов
/ 16 апреля 2020

Может кто-нибудь сказать мне, какую ошибку я допустил при использовании конструктора "this" внутри конструктора publi c Student (). Подскажите пожалуйста как это исправить. Компилятор показывает эту ошибку -

Ошибка: (10, 11) java: конструктор Студент в классе com.shreyan sh .Student не может быть применен к данным типам; обязательно: аргументы не найдены: int, java .lang.String причина: фактические и формальные списки аргументов различаются по длине

**** Код показан здесь ****

package com.shreyansh;

import java.util.Scanner;

public class Student {
      private int rno;
      private String name;

      public Student() {
          this(0, "Not defined"); //what is the error in this line
      }

      public void enter() {
          System.out.println("Enter name of the student - ");
          Scanner scanner = new Scanner(System.in);
          this.name=scanner.nextLine();
          System.out.println("Enter the roll number - ");
          this.rno=scanner.nextInt();
          scanner.close();
      }
      public void show() {
          System.out.println("The name of the student is - "+name);
          System.out.println("And the roll number is - "+rno);
      }
}

Ответы [ 4 ]

2 голосов
/ 16 апреля 2020

Когда вы вызываете конструктор из другого конструктора, вы должны определить конструктор, который вы вызываете:

Добавление этого конструктора:

public Student(int rno, String name) {
    this.rno = rno;
    this.name = name;
}

позволит

this(0, "Not defined");

вызов для прохождения компиляции.

1 голос
/ 16 апреля 2020
public Student() {
          this(0, "Not defined"); //what is the error in this line
      }

То, что он пытается сделать, это вызвать конструктор из того же класса с этими параметрами. Чтобы это работало, этот конструктор должен быть там:

public Student (int rno, String name) {
  this.rno = rno;
  this.name = name;
}

, но у вас нет такого конструктора, поэтому измените текущий конструктор на:

public Student() {
  this.rno = 0;
  this.name = "Not defined";
}

или, добавить второй конструктор.

0 голосов
/ 16 апреля 2020

проблема в том, как вы создаете свой объект. ваш конструктор должен выглядеть так:

public Student() {
       // you have to indicate the value of each variable here
      this.rno = 0; 
      this.name = "name";
}
0 голосов
/ 16 апреля 2020

Когда вы используете this внутри вашего конструктора, вы вызываете другой конструктор внутри вашего класса, но на самом деле у вас нет другого конструктора, который имеет такие аргументы, поэтому вы должны создать еще один конструктор с указанными параметрами, например так:

public Student(int rno, String name) 
{
   this.rno = rno;
   this.name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...