2016-05-21 10 views
0

Scannerを使用してコマンドラインからユーザーにプロンプ​​トを出して、Rationalアレイの定義済みの索引から選択したいとします。その後、選択したRationalオブジェクトの値を表示します。どうすればいいのですか?以下は、私がこれまでオブジェクト配列のインデックスを要求し、値を表示する方法は?

//Array of rational objects that I want to let user select from 

Rational[] rationals = {new Rationa(2, 3), new Rational(2, 18), new Rational(3,12)}; 

//Method for displaying value of object 

public static void displayValue() 
{ 
    System.out.println("Please select from index: "); 
} 
+0

@CenturiDamos。ポップアップウィンドウを使用したい場合は、 "JOptionPane"を調べることをお勧めします。 – Arman

答えて

0

Rationalクラスの最初に.toString()メソッドを作成します。

System.out.println(Arrays.toString(rationals)); 

は、その後、あなたがこのように入力を得ることができます:

Scanner sc = new Scanner(System.in); 
int index = sc.nextInt(); 

が許容数が与えられたことを確認します

if(index > -1 && index < rationals.length){ 
    System.out.println(rationals[index]); 
}else{ 
    System.out.println("Please input an acceptable value.") 
} 

残したいなら、あなたはこのような配列を印刷することができます許容可能なものが与えられるまで、入力を求める場合は、whileループを使用して実行することができます。

boolean askAgain = true; 
while(askAgain){ 
    int index = sc.nextInt(); 
    if(index > -1 && index < rationals.length){ 
     System.out.println(rationals[index]); 
     askAgain = false; 
    }else{ 
     System.out.println("Please input an acceptable value.") 
    } 
} 

EDIT:リストがインデックス0で始まり、1ではないことを指定したい場合があります。

EDIT2:.toString()例えば、オブジェクト・クラスの

public class Person(){ 
    private String name; 
    private int id; 

    public Person(String n, int id){ 
    this.name = n; 
    this.id = id; 
    } 

    public String toString(){ 
    return "Name: " + name + ", " + id; 
    } 
} 

toString();方法は、単にStringれる "有益な情報" を返すためのものです。この例では、Personクラスの場合、toString()メソッドは、ユーザーのnameidを返します。したがって、Rationalクラスの場合、そのメソッドを調整して、オブジェクトをStringに正しく変換できます。

使用法:

Person p1 = new Person("Jake", 1); 
System.out.println(p1.toString()); 

OUTPUT:私のソリューションは、デフォルトでは、コマンドラインを使用

"Name: Jake, 1" 
+0

ありがとうございます。そして私がそれを創り出す時。toString()メソッドは何を返すべきですか?私は空のステートメントの括弧でパブリックString toString()としてそれを持っていた。 – CenturiDamos

+0

@CenturiDamos toString()メソッドの例を示すために、私の答えに編集を追加しました。 – Arman

+0

私は状況を修正しました。ありがとうArman! – CenturiDamos

-1

あなたは、コンソールからの入力を読み取るためにScannerを使用する必要があります持っているコードです。 Scannerを使用するには、この行は新しいScannerを作成し、プログラムの標準入力である、System.inにそれを添付しimport java.util.Scanner;

する必要があります。 Scanner console = new Scanner(System.in);

入力から整数を読み取り、インデックスを選択できます。その後

int index = console.nextInt();

、あなたがする必要がありますすべてはあなたの配列にindexで値をプリントアウトです。

+0

誰かが "-1"またはrationals.lengthより大きい数字を入力すると、コードは機能しません。 – Arman

+0

真実ですが、私はインデックス保護とInputMismatchExceptionsをキャッチして私の答えを駄目にしたくありませんでした。 – TowerFan

関連する問題