0

I am trying to send multiple values using arrays, I am using return to send two different data types, but I know it is the wrong way of doing it. I have research but I can't find the solution for this specific problem. Any help would be appreciated. Thanks.

import java.util.Scanner;

public class methodbankinput {
    public static void main(String args[]) {

        Scanner kb = new Scanner(System.in); 
        String[] names = new String[2];
        int[] account_numbers = new int[2];
        String userinput = "";
        String accountosearch="";
        int count = 0;

        do {
                System.out.println("Type P");
                System.out.println("Type S");
                System.out.println("Type E to exit");
                userinput = kb.nextLine();

                if(userinput.equals("P")) {
                   **String[] populate** = populate(names,account_numbers);

                } else if(userinput.equals("S")) {

                System.out.println("Please enter the accoun to search");
                accountosearch = kb.next(); 
                search(names,accounttosearch);
                } 
                count++;
           }
           while(count >=0);
} 

public static String[] int[] populate(String[] names,int[] account_numbers) {   
    Scanner kb = new Scanner(System.in); 
        for (int i = 0; i < names.length; i++) {
            System.out.println("Please enter 10 names");
            names[i] = kb.next();
            System.out.println("Please Enter 10 Account_numbers");
            account_numbers[i] = kb.nextInt();
        }
        return names[10],account_numbers[10];    
    }
 }    
1
  • 3
    It seems that you actually want to return a Map<Integer, String> (it contains a collection of Pair<Key,Value> where Key is the account number and Value is the name.) Commented Dec 11, 2013 at 15:49

2 Answers 2

3

You can't do that.

Instead, you should create an Account class with properties for the name and account number, then return Account[].

Sign up to request clarification or add additional context in comments.

Comments

1

Java does not support methods to have more than one return type.

You can however return an Object[] array with two components which themselves are arrays again: a String[] array and an int[] array: return new Object[] { names, account_numbers };

Another way is to provide a special "tuple" class for your method which contains the two result values of interest. Such a tuple class can be compared to a struct in C:

public class NamesAccountNumbers {
  private String[] names;
  private int[] accountNumbers;

  /** constructor */
  public NamesAccountNumbers(String[] names, int[] accountNumbers) {
    this.names = names;
    this.accountNumbers = accountNumbers;
  }

  public String[] getNames() {
    return names;
  }

  public int[] getAccountNumbers() {
    return accountNumbers;
  }

}

It is possible to make the two fields of this class public and providing no constructor and getters, which would result in a struct like object. However, it is considered good practice to obey the Java-Beans-Style.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.