Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要调用数组并在其他类中打印它_Java - Fatal编程技术网

Java 需要调用数组并在其他类中打印它

Java 需要调用数组并在其他类中打印它,java,Java,所以我有一个股票程序,它的符号存储在一个数组中,我需要将该数组调用到另一个类中,并将其打印出来。这是我的代码和数组代码 abstract class stockArray { String stocks[]; String stockSymbols[] ={ "SMG", "APL", "GE", "TOY","SUB","GM","LG","VZ","JP","BTN"}; } 这是我需要调用它并将其打印到Switch CASE语句的case1的代码。如何将该数组调用到该位

所以我有一个股票程序,它的符号存储在一个数组中,我需要将该数组调用到另一个类中,并将其打印出来。这是我的代码和数组代码

abstract class stockArray
{

   String stocks[];

   String stockSymbols[] ={ "SMG", "APL", "GE", "TOY","SUB","GM","LG","VZ","JP","BTN"};

}
这是我需要调用它并将其打印到Switch CASE语句的case1的代码。如何将该数组调用到该位置(案例1)并打印该数组的内容?谢谢

 public class stockProgram  
 {

    public static void main(String[] args) 
     {

       String s;

      Scanner sc= new Scanner(System.in);
      Scanner input = new Scanner(System.in);
      Scanner dec = new Scanner(System.in);       

    System.out.println("Welcome to the stock tracker Program,");

    System.out.println("What would you like to do?");

    System.out.println("***MENU OPTIONS***");

    System.out.println("1. See a list of stocks");
    System.out.println("2. Buy stocks");
    System.out.println("3. Sell Stock Holdings.");
    System.out.println("4. Search Stock listings");
    System.out.println("5. Exit Program");

    System.out.println(" Please Enter an option");        

    int op = sc.nextInt();
        switch(op)
    {


      case 1: System.out.println("---Stock Holdings List---");
              System.out.println("These are the current stocks avaliable to purchase in this program.");

     break;

首先,请遵循命名约定-类名以大写开头,因此将
stockArray
更改为
stockArray

访问该数组的一种方法是使其
静态
,如下所示:-

static final String stockSymbols[] ={ "SMG", "APL", "GE", "TOY","SUB","GM","LG","VZ","JP","BTN"};
然后在案例陈述中使用以下代码:-

String symbols[] = StockArray.stockSymbols;
Arrays.stream(symbols).forEach(System.out::println);
或者,如果不想使其成为静态的,可以创建一个匿名内部类:-

String symbols[] = new StockArray() {}.stockSymbols;
Arrays.stream(symbols).forEach(System.out::println);
请注意,我将该数组存储在另一个变量
symbols
中只是为了演示,您不需要这样做。

定义一个扩展抽象类
stockArray
的类:

class StockArraySubclass extends stockArray {
}
stockProgram
类的开关盒中使用
StockArraySubclass

StockArraySubclass st = new StockArraySubclass();
System.out.println(Arrays.toString(st.stockSymbols));

这将打印:
[SMG、APL、GE、TOY、SUB、GM、LG、VZ、JP、BTN]

您不能“调用”阵列。我想你的意思是说“我需要将该数组传递到另一个类”
stockArray
类是抽象的,它不能在当前状态下使用。不要对同一个输入使用多个扫描仪,只使用一个扫描仪是否需要将
stockArray
设置为非抽象?@ScaryWombat很好,不确定OP为什么会有一个没有任何抽象方法的抽象类。如果那里没有隐藏的方法,那么我主张将其非抽象化;这样就不需要匿名的内部类了。嘿,Kartik,谢谢你的帮助,所以我做了你推荐的第一件事,并将其设置为静态,但是我在内部类StockProgram中得到了一个错误非法的静态声明。StockArray修饰符static只允许在常量变量中使用declarations@MattLoadman啊,你有
StockArray
class内部
StockProgram
class。在这种情况下,将单词
abstract
替换为
static
,因为您需要从
main
方法调用它。然后使用
stringsymbols[]=newtest().stockSymbols访问它