2016-11-30 2 views
0

Ich möchte das "i" von der letzten Methode zur Hauptmethode als Index zurückgeben. Ich kann nicht herausfinden, wie man das "i" zurückgibt, da es in der if-Anweisung eingeschlossen ist. Der Code soll dem Benutzer mitteilen können, wo sich der Name im Array befand.Wie zeige ich den Index eines bestimmten Objekts an?

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)' findet? Ich verstehe nicht, was du meinst. – Igorzovisk

+0

Ich möchte ich zurückgeben, also werde ich den Index haben, wo es sagt "int Index = Suche (nameToLookFor) –

+1

Es gibt eine Reihe von Möglichkeiten, um diese Art von Problem zu lösen: (1)" Rückkehr "es von der Methode als vorgeschlagen in Tims Antwort, die oft funktioniert: (2) deklariere "int i;" außerhalb der Schleife und verwende nicht "int" in der for-Anweisung; (3) deklariere eine andere Variable und weise ihr "i" zu . – ajb

Antwort

0

einfach das ausge Index von Ihrem Search() Methode:

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; 
} 

Hier habe ich einen Wert von -1 kehre zurück, wenn der Name nicht gefunden wird. Dies sollte in Ordnung sein, da Zeichenfolgen in Java keinen negativen Index haben können.

0

Sie müssen die Variable außerhalb der Schleife haben und auch brechen, wenn sie den Wert

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; 

} 
Verwandte Themen