2016-11-30 1 views
0

最後のメソッドの "i"をメインメソッドにインデックスとして返したいとします。 if文で囲まれているので、 "i"を返す方法はわかりません。 コードは、名前が配列内にあった場所をユーザーに伝えることができます。特定のオブジェクトのインデックスを表示するには?

import java.util.*; 
import java.io.*; 
/** 
* A simple array activity where the user will provide data for an array 
    that will be stored into an array. It will allow the user to search 
    any name in the array. 
    Katelynn Schoenrock 
    Ken Nguyen 
    Computer Science 1301 
    Activity 2 
    11/29/2016 
*/ 
public class Array{ 
    private static Student[] data = new Student[10]; 

    public static void main(String[] args){ 
     Scanner keyboard = new Scanner(System.in); 
     for(int i = 0; i< data.length; i++){ 
      System.out.println("Enter Student name"); 
      String name = keyboard.nextLine(); 
      System.out.println("Enter Birthdate"); 
      String birthDate = keyboard.nextLine(); 
      System.out.println("Enter Address"); 
      String address = keyboard.nextLine(); 
      new Student(name, birthDate, address); 
      data[i] = new Student(name, birthDate, address); 
     } 
     String nameToLookFor = create(); 
     int Index = Search(nameToLookFor); 
     System.out.println("Object's Index: " + Index); 


    } 

    /** 
    * This method obtains the user's input and returns the Student object 
    * @param return nameToLookFor 
    */ 
    public static String create(){ 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Enter a name to search"); 
     String nameToLookFor = keyboard.nextLine(); 
     return nameToLookFor; 

    } 

    /** 
    * This method allows for the user to search any given name. 
    * @param return The index of the object 
    */ 
    public static int Search(String nameToLookFor){ 
     for(int i = data.length - 1; i >= 0; i--){ 
     if(data[i].getName().equalsIgnoreCase(nameToLookFor)){ 
      System.out.println(data[i]); 
     } 

    } 

    } 

} 
+0

'のSystem.out.println(i)を見つけたときに分割する必要がありますか?私はあなたが何を意味するかは分かりません。 – Igorzovisk

+0

私は私に戻りたいと思いますので、 "int Index = Search(nameToLookFor) –

+1

のようなインデックスがあります。この種の問題を解決する方法はいくつかあります。(1)メソッドから' (2)ループの外側で 'int i 'を宣言し、' for'文で 'int'を使わない、(3)他の変数を宣言して' i'を代入する。 – ajb

答えて

0

ちょうどあなたのSearch()方法からインデックスを返します。

public static int Search(String nameToLookFor) { 
    int NOT_FOUND = -1; 
    for (int i=data.length - 1; i >= 0; i--) { 
     if (data[i].getName().equalsIgnoreCase(nameToLookFor)) { 
      System.out.println(data[i]); 
      return i; 
     } 
    } 

    return NOT_FOUND; 
} 

ここで名前が見つかっていないされている場合、私は-1の値を返しています。これは、Javaの文字列に負のインデックスを付けることができないため、問題ありません。

0

あなたのループに可変の外部を有し、またそれが `値

public static int Search(String nameToLookFor){ 
    int i = -1; // not found value 
    for(i = data.length - 1; i >= 0; i--){ 
    if(data[i].getName().equalsIgnoreCase(nameToLookFor)){ 
     System.out.println(data[i]); 
     break; 
    } 
    return i; 

} 
関連する問題