Как получить доступ к методу из другого, если у него есть аргументы

#java #methods

#java #методы

Вопрос:

Я хочу знать, как я могу получить доступ к вызову метода, когда он имеет arraylist в качестве аргумента из другого класса.

 import java.util.*;
class Business
{
public static void main()
{
    Scanner si = new Scanner(System.in);
    int t = 0;
    System.out.println("Enter--");
    System.out.println("1 to add a account");
    System.out.println("2 to check the balance");
    int d = si.nextInt();
    if(d==1)
    {
        add_account();
    }
    if(d == 2)
    {
        check();
    }
    
}
public static void add_account()
{
    Scanner si = new Scanner(System.in);
    int min = 1000;
    int max = 9999;
    int acn;
    List<Double> ac = new ArrayList<>();
    List<Integer> cl = new ArrayList<>(); 
    List<String> al = new ArrayList<>(); 
    System.out.println("Enter the name of the account user");
    al.add(si.next());
    System.out.println("Enter the amount user has deposited");
    cl.add(si.nextInt());
    ac.add(Math.floor(Math.random() * (max - min   1)   min));
    System.out.println("Please re-enter your name");
    String name = si.next();
    acn = al.indexOf(name);
    System.out.println("Your account number is " acn);
    System.out.println("Your account password is " ac.get(acn));
    System.out.println(ac);
    main();
}
public static void check(List<Double> ac)
{
    Scanner si = new Scanner(System.in);
    System.out.println("Enter the account number whoose you want to check the balance");
    int c = si.nextInt();
    System.out.println(ac);
}
}
 

Здесь я хочу знать, как получить доступ к методу проверки, я думаю, мне нужно что-то написать в скобках. Если да, можете ли вы сказать мне, что написать, если нет, пожалуйста, скажите, как я могу получить доступ к методу проверки из основного метода.

Комментарии:

1. Поможет ли вам эта ссылка? Параметры метода Java

2. Я думаю, что я должен написать что-то в скобках — это правильное предположение

Ответ №1:

Самым простым решением было бы переместить 3 списка, хранящих пользовательские данные, с уровня add_account класса на уровень класса в виде статических переменных, подобных этому:

 public class Business {
    private static List<Double> ac = new ArrayList<>();
    private static List<Integer> cl = new ArrayList<>();
    private static List<String> al = new ArrayList<>();

    public static void main() {
    //...
    }
    public static void add_account() {
    //...
    }

    public static void check() {
    //...
    }
}
 

Таким образом, вы можете удалить входной параметр из check метода и просто получить доступ ac к списку уровня класса.

Однако лучшим решением было бы смоделировать учетную запись как выделенный класс, например

 public class Account {
    String name;
    Integer balance;
    String password;
    // getters   setters
}
 

и сохраните их на карте, где ключом является имя / идентификатор учетной записи

 private static Map<String, Account> accounts = new HashMap<>();
 

Ответ №2:

Я пытаюсь понять код

 public static void check(List<Double> ac)
{
    Scanner si = new Scanner(System.in);
    System.out.println("Enter the account number whoose you want to check the balance");
    int c = si.nextInt();
    System.out.println(ac);
}
 

здесь вы объявляете метод с параметром списка. Таким образом, вы не можете вызвать этот метод, не указав параметр внутри. Если вы хотите выполнить поиск учетной записи внутри метода, вы можете просто удалить параметр метода, получить учетную запись и отобразить ее.

 public static void check() //parameter removed
{
    Scanner si = new Scanner(System.in);
    System.out.println("Enter the account number whoose you want to check the balance");
    int c = si.nextInt();  // get the account number
     List<Double> account = new ArrayList<Double>();
      // ... some operation 
    System.out.println(account.toString());
}
 

После этого внутри основного метода вы можете вызвать этот метод

 public static void main()
{
    Scanner si = new Scanner(System.in);
    int t = 0;
    System.out.println("Enter--");
    System.out.println("1 to add a account");
    System.out.println("2 to check the balance");
    int d = si.nextInt();
    if(d==1)
    {
        add_account();
    }
    if(d == 2)
    {
        check();
    }
    
}
 

Комментарии:

1. List<Double> list = new List<>(); Business.check(list); Список используется так же, как и любой другой параметр.