Beginner - открыть метод из другого класса

106
4

Я немного смущен.

У меня есть два java файла, один из которых - ApplicationXXX.java(Main) и другой readInput.java. Теперь моя цель - выполнить метод из readInput в основном классе. Я знаю способ с экземпляром вроде:

readInput read = new readInput();

с этим я могу получить доступ только к значениям метода, но метод включает также поля ввода, которые собираются сократить содержимое из readInput, поскольку оно включает в себя множество проверок правдоподобия. В первый раз мне просто нужно открыть метод для чтения значений, не давая никакой переменной обратно. Im импортирует также пакет в ApplicationXXX.java.

package application.test;

import java.io.bufferedeader;

public class readInput {

public String var1;
public String var2;

public readInput();

BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();

}
}

Было бы здорово, когда кто-то может мне помочь. Когда вам нужна дополнительная информация, просто прокомментируйте это.

спросил(а) 2015-03-10T16:01:00+03:00 5 лет, 7 месяцев назад
1
Решение
108

Вы не объявляете какой-либо метод здесь, следующий блок должен быть в методе или конструкторе:

BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();

Я подозреваю, что вы хотите этот блок в конструкторе, и тогда вы должны закрепить линию

public readInput();

в

   public readInput() { 

BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();

}

Как примечание, в java - класс должен начинаться с буквы верхнего регистра (сильное соглашение), поэтому класс (и конструктор) следует переименовать в ReadInput.

Вы также должны пересмотреть имя класса (это не должен быть глагол), и работа, вероятно, должна выполняться в методе, а не в конструкторе.

EDIT: Ниже приведены небольшие рекомендации по рефакторингу:

public class InputReader { //not a verb, upper case

public String var1;
public String var2;

// removed the default constructor, there is no need for it
public void readInput() { //this is a method! not constructor!

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();

}
}

ответил(а) 2015-03-10T16:05:00+03:00 5 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема