Я только начал изучать Java и написал этот код для практического создания интерфейса. Я понимаю, что использование отношения интерфейса здесь, вероятно, не так, как предполагается, что оно действительно используется, но я делаю это только для практики и базового понимания.Использование сканера в нескольких классах
Так или иначе, я создал программу для ввода пользователем информации о том, какую операцию они хотели бы выполнить, а затем выполнить указанную операцию. Для этой цели пользователь предоставляет два входа: сначала операцию, которую они хотели бы выполнить, а затем номер, на который они хотели бы выполнить. Например, если они хотели бы найти квадратный корень из 4, они сначала должны ввести 2, чтобы выбрать квадратный корень, а затем 4, чтобы указать, что они хотели бы найти квадратный корень из 4. Поэтому для этой цели я открыл сканер класс на нескольких классах. Тем не менее, закрытие сканера в любом из классов создает ошибку, потому что, по-видимому, после ее закрытия в файле он не может быть снова открыт. Я много искал, и большинство предложений было сосредоточено вокруг того, что использование нескольких экземпляров такого сканера просто создает проблемы, поэтому создавайте только один. В то время как я могу переписать этот код, чтобы сделать эту настройку, мне было интересно, есть ли способ, что я мог делать то, что я сделал, не создавая никаких предупреждений, как они всплывают в этом коде:
import java.util.Scanner;
public class Operation
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("1. Square");
System.out.println("2. Square Root");
System.out.print("Enter Number: ");
int choice = in.nextInt();
switch(choice)
{
case 1:
Squaring s1 = new Squaring();
s1.getDim();
s1.operate();
break;
case 2:
Root r1 = new Root();
r1.getDim();
r1.operate();
}
}
}
interface Method
{
void getDim();
void operate();
}
class Squaring implements Method
{
double n, r;
public void getDim()
{
Scanner in = new Scanner(System.in);
System.out.print("Input Number: ");
n = in.nextDouble();
}
public void operate()
{
r = n*n;
System.out.println("Squared of " + n + " is = " + r);
}
}
class Root implements Method
{
double n, r;
public void getDim()
{
Scanner in = new Scanner(System.in);
System.out.print("Input Number: ");
n = in.nextDouble();
in.close();
}
public void operate()
{
r = Math.sqrt(n);
System.out.println("Square root of " + n + " is = " + r);
}
}
Код, который вы вставили, не показывает никаких предупреждений/ошибок. Он работает отлично. Что еще вы хотите? – progyammer