【问题标题】:Use a variable from another method使用其他方法的变量
【发布时间】:2019-12-10 12:41:43
【问题描述】:

我在 Java 中有 2 个方法。

  1. 在第一种方法中,我要求用户做出选择,然后我想存储这个选择以备将来使用。
  2. 我写的第二种方法只是为了调用第一种方法来使用这个选择。

现在,我想使用这个变量并将其添加到ArrayList有可能吗?

public static void letUserChooseAgain () {
    System.out.println("Please choose an option (1/2):");
    System.out.println("1. Dollars to Pounds");
    System.out.println("2. Pounds to Dollars");
    Scanner scanner = new Scanner(System.in);
    double userChoice = scanner.nextDouble();
    userChoiceToRemember(userChoice);
}


public static void userChoiceToRemember (double number) {
    double remember = number;
}

【问题讨论】:

  • 将它存储在局部变量中,就像您目前所做的那样,是没有用的,因为一旦方法返回它就会消失。您需要将其存储在类的某个静态或实例变量中。

标签: java variables methods


【解决方案1】:

我相信,如果您找到源代码,我完全理解您的要求

可以通过两种不同的方法提出:

方法 1

import java.util.ArrayList;
static ArrayList < Double > numbers = new ArrayList < Double > ();

  public static void letUserChooseAgain ()
  {
    System.out.println ("Please choose an option (1/2):");
    System.out.println ("1. Dollars to Pounds");
    System.out.println ("2. Pounds to Dollars");
    Scanner scanner = new Scanner (System.in);
    double userChoice = scanner.nextDouble ();
      numbers.add (userChoice);
      userChoiceToRemember (userChoice);
  }


  public static void userChoiceToRemember (double number)
  {
    double remember = number;
    System.out.println ("Remembered User Choice :" + numbers.get (0));
  }

方法 2

import java.util.ArrayList;
  static ArrayList < Double > numbers = new ArrayList < Double > ();
  public static void letUserChooseAgain ()
  {
    System.out.println ("Please choose an option (1/2):");
    System.out.println ("1. Dollars to Pounds");
    System.out.println ("2. Pounds to Dollars");
    Scanner scanner = new Scanner (System.in);
    double userChoice = scanner.nextDouble ();
      userChoiceToRemember (userChoice);
  }


  public static void userChoiceToRemember (double number)
  {
    double remember = number;
    numbers.add (remember);
    System.out.println ("Remembered User Choice :" + numbers.get (0));
  }

希望以上代码对你有所帮助,祝你有美好的一天!!

【讨论】:

    【解决方案2】:

    如果我理解正确,你想像这样保护数组中的数字吗?

    Array<Double> numbers = new Array<>();
    
    public static void letUserChooseAgain () {
        System.out.println("Please choose an option (1/2):");
        System.out.println("1. Dollars to Pounds");
        System.out.println("2. Pounds to Dollars");
        Scanner scanner = new Scanner(System.in);
        double userChoice = scanner.nextDouble();
        userChoiceToRemember(userChoice);
    }
    
    
    public static void userChoiceToRemember (double number) {
        double remember = number;
        numbers.add(number);
    }
    

    【讨论】:

      【解决方案3】:

      您需要创建一个数据结构来保留需要共享的值。通常,它是通过定义一个类来完成的,该类具有保留类所需数据的成员以及可以访问和更改成员的方法。这个具有成员和访问器方法的简单 java 类称为 Java Bean。

      在您的情况下,另一种选择是使用 ArrayList&lt;Double&gt; 类型的静态变量来保留用户选择。

      我会选择一个简单的类,让用户通过ArrayList&lt;Double&gt; 成员进行选择。另一个类是使用用户提供的输入控制程序流程的类。

      在您的主类 - 您的程序的入口点中,您需要实例化控制流程的类和存储用户选择的类。

      【讨论】:

        【解决方案4】:

        给它一个ArrayList 以添加到:

        public static void letUserChooseAgain () {
            Scanner scanner = new Scanner(System.in);
            double userChoice = scanner.nextDouble();
            ArrayList<Double> myArrayList = new ArrayList<Double>()
            userChoiceToRemember(userChoice, myArrayList);
        }
        
        
        public static void userChoiceToRemember (double number, ArrayList<Double> anArrayList) {
            anArrayList.add(number);
        }
        

        让方法创建它自己的

        public static void letUserChooseAgain () {
            Scanner scanner = new Scanner(System.in);
            double userChoice = scanner.nextDouble();
            ArrayList<Double> userChoiceInList = userChoiceToRemember(userChoice);
        }
        
        
        public static ArrayList<Double> userChoiceToRemember (double number, ArrayList<Double> anArrayList) {
            ArrayList<Double> myArrayList = new ArrayList<Double>()
            myArrayList.add(number);
            return myArrayList;
        
        }
        

        或将其添加到循环外的ArrayList

        public static void letUserChooseAgain () {
            Scanner scanner = new Scanner(System.in);
            double userChoice = scanner.nextDouble();
            ArrayList<Double> myArrayList = new ArrayList<Double>()
            myArrayList.add(userChoiceToRemember(userChoice));
        }
        
        
        public static void userChoiceToRemember (double number) {
            return number;
        }
        

        假设你有充分的理由不能这样做:

        public static void letUserChooseAgain () {
            Scanner scanner = new Scanner(System.in);
            ArrayList<Double> myArrayList = new ArrayList<Double>()
            myArrayList.add(scanner.nextDouble());
        }
        
        

        【讨论】:

          猜你喜欢
          • 2016-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-26
          • 2018-05-31
          • 2012-08-20
          相关资源
          最近更新 更多