2014-10-07 2 views
-1

Я пытаюсь создать код, чтобы в конечном итоге вычислить площадь и периметр прямоугольников с их размерами от пользовательского ввода. На данный момент, когда я пытаюсь вызвать свой класс rectangle для создания нового прямоугольника, компилятор говорит, что конструктор прямоугольника не определен.Конструктор (имя конструктора) не определен

import java.util.Scanner; 

public class rectangles { 

    public class rectangle { 
    public rectangle() {} 
    public int length; 
    public int width; 
    public rectangle(int len, int wid) { 
     length = len; 
     width = wid; 

    } 

    } 

    public void runner() { 

    Scanner scanner = new Scanner(System.in); 
    String input1 = scanner.nextLine(); 
    String input2 = scanner.nextLine(); 
    rectangle first = new rectangle(input1, input2); //Error here 
    System.out.println(first); 
    scanner.close(); 
    } 

    public static void main(String[] args) {} 
} 

Ошибка «Конструктор rectangles.rectangle (java.lang.String, java.lang.String) не определено»

+3

Ваш конструктор принимает 'int' но вы назвав его с' String' аргументами. – Voicu

ответ

0

ошибки является, как компилятор сказал - вы объявили конструктор, который принимает два int аргументов, но попытался создать rectangle, используя два String s. Типы несовместимы. Вы должны либо использовать сканер для чтения int, либо использовать один из методов утилиты в классе Integer для преобразования String в int или Integer. Вы также должны знать стандарты кодирования, такие как имена капитализированных классов.

0

Сделать rectangle класс private и каждый public класс, как правило, должен быть в его собственный компилируемый файл.

Кроме того, конструктор, который youy определили принимает int, но вы передаете String

Рассмотрите возможность использования Integer.parse (input1);

0

Прежде всего, вы должны использовать правильные соглашения Java. Это означает, что имена типов: PascalCase, а имена переменных/методов - camelCase.

Вы создали конструктор для rectangle, который принимает два int s, но вы передаете два String s. Класс Scanner имеет удобный способ получения int с ввода: Scanner#nextInt.

Вы должны реорганизовать свой код так, чтобы input1 и input2 являются int типов:

Scanner scanner = new Scanner(System.in); 
int input1 = scanner.nextInt(); 
int input2 = scanner.nextInt(); 
rectangle first = new rectangle(input1, input2); 
Смежные вопросы