私はちょうどJavaを学び始め、このコードを書いてインターフェイスを作成する練習をしました。ここでのインターフェース関係の使用は、おそらく実際に使用される方法ではないが、私は練習と基本的な理解のためだけにこれをやっていたことに気がついた。複数のクラスでスキャナを使用する
とにかく、実行する操作をユーザーから入力して、その操作を実行するプログラムを作成しました。この目的のために、ユーザーは2つの入力を提供します。最初に実行したい操作と、実行したい番号です。たとえば、4の平方根を求めたい場合は、2を入力して平方根を選択し、次に4を入力して4の平方根を求めようとします。この目的のために、私はスキャナを開きました複数クラスのクラス。ただし、クラス内のいずれかでスキャナを閉じると、ファイル内で閉じた後に再オープンできないため、エラーが発生します。私は多くを検索し、ほとんどの提案は、このようなスキャナの複数のインスタンスを使用すると問題が生じるので、1つしか作成しないと主張しました。私はその調整をするために、このコードを書き換えることができますが、彼らは、このコードでポップアップ表示のように、私は警告メッセージを作成せずに、私がやっていること行うことができます方法があった場合、私は思っていた:
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