如何从我的静态方法将值传递到我的对象数组

How to pass values to my object array from my static method

我有 3 个 classes 一个 EyMain,它是我的主要 class,我在其中读取了一个 "n" 值 > 100 ,它创建了我的对象编号 arrays.Then 我调用 writeUSB() 方法 填充对象数组。

public class EyMain {

    public static void main(String[] args) {

        int n;

        do {       
            System.out.println("Give an integer value > 100 : ");
            n = scannerUserInput.getInteger();
        } while (n < 101);

        ekpaideytikoYliko usb[] = new ekpaideytikoYliko[n];

        eYMethods.writeUSB(usb);
        eYMethods.showDocs(usb);

        } 
}

我的另一个 class 是 eYMethods,我有 2 个静态方法 writeUSB 我想 return 已存储的最后一个元素的指针在我的数组中,因为我想检查我的 memorySpace > 8gb 我想将它从数组中删除并更新数组的最后一个元素showDocs 我只想打印用户键入的对象数组中的元素,并只打印带有 .doc 或 .docx .

的文件扩展名
package eymain;

public class eYMethods {

static double writeUSB(ekpaideytikoYliko usb[]) {

    for(int i = 0; i < usb.length; i++) {      

        System.out.println("Give fileName : ");
        usb[i].setFileName(scannerUserInput.getString());
        System.out.println("Give minutes : ");
        usb[i].setMinutes(scannerUserInput.getDouble());
        System.out.println("Give memorySpace");
        usb[i].setMemorySpace(scannerUserInput.getDouble());
    }


    return 0;

}
static void showDocs(ekpaideytikoYliko usb[]) {

    for(int i =0; i < usb.length; i++) {
        System.out.println("fileName : " + usb[i].getFileName());
        System.out.println("minutes : " + usb[i].getMinutes());
        System.out.println("memorySpace : " + usb[i].getMemorySpace());
    }
}}

最后一个 class 是我的 ekapideytikoYliko,我有我的私有变量、get 和 set、我的构造函数和一个字符串方法 getFileType,我想从文件名中获取它的扩展名。示例(.doc、.docx、.mp4)。

package eymain;

public class ekpaideytikoYliko {

private String fileName;
private double minutes;
private double memorySpace;

ekpaideytikoYliko(String fileName, double minutes, double memorySpace) {

    this.fileName = fileName;
    this.minutes = minutes;
    this.memorySpace = memorySpace;

}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

public double getMinutes() {
    return minutes;
}

public void setMinutes(double minutes) {
    this.minutes = minutes;
}

public double getMemorySpace() {
    return memorySpace;
}

public void setMemorySpace(double memorySpace) {
    this.memorySpace = memorySpace;
}

String getfileType(ekpaideytikoYliko usb[]) {

    int name = fileName.lastIndexOf(".");
    if (name == -1) {
        return "";
    }
    return fileName.substring(name);
}}

我的 scannerUserInput 文件:

package eymain;

import java.util.Scanner;

public class scannerUserInput {

    static int getInteger(){
    Scanner ob = new Scanner(System.in);
      try{
    int i = ob.nextInt();
        return i;
      }
      catch(Exception e){
    return -1;
      }
}

    static byte getByte(){
    Scanner ob = new Scanner(System.in);
      try{
    byte b = ob.nextByte();
        return b;
      }
      catch(Exception e){
    return -1;
      }
}
    static short getShort(){
    Scanner ob = new Scanner(System.in);
      try{
    short s = ob.nextShort();
        return s;
      }
      catch(Exception e){
    return -1;
      }
}
    static long getLongInteger(){
    Scanner ob = new Scanner(System.in);
      try{
    long l = ob.nextLong();
        return l;
      }
      catch(Exception e){
    return -1;
      }
}
    static float getFloat(){
    Scanner ob = new Scanner(System.in);
      try{
    float f = ob.nextFloat();
        return f;
      }
      catch(Exception e){
    return -1;
      }
}
    static double getDouble(){
    Scanner ob = new Scanner(System.in);
      try{
    double d = ob.nextDouble();
        return d;
      }
      catch(Exception e){
    return -1;
      }
}
    static String getString(){
    Scanner ob = new Scanner(System.in);
      try{
    String s = ob.nextLine();
        return s;
      }
      catch(Exception e){
    return "";
      }
}

    static char getChar(){
    Scanner ob = new Scanner(System.in);
      try{
    char ch = ob.next().charAt(0);
        return ch;
      }
      catch(Exception e){
    return ' ';
      }
}    

} 

当我在 writeUSB 方法中键入来自扫描仪的数据时,我在第一次键入时遇到错误。

在 java 中,当您创建一个对象数组时,您的情况是:

ekpaideytikoYliko usb[] = new ekpaideytikoYliko[n];

Java 只需这样做

// Lets say n = 5 for easier demonstration
{null, null, null, null, null}

来源:Initial Values of Variables

For all reference types (§4.3), the default value is null.

现在,当您在 eYMethods 中尝试调用方法时,它只是 return 空指针,因为该元素为空。要解决这个问题,您需要创建一个对象并将该对象存储在数组中。像这样:

for (int i = 0; i < usb.length; i++) {
    System.out.println("Give fileName : ");
    String fileName = scannerUserInput.getString();
    System.out.println("Give minutes : ");
    double minutes = scannerUserInput.getDouble();
    System.out.println("Give memorySpace");
    double memorySpace = scannerUserInput.getDouble();
    ekpaideytikoYliko tempEkpaideytikoYliko = new ekpaideytikoYliko(fileName, minutes, memorySpace);
    usb[i] = tempEkpaideytikoYliko;
}

现在 java 将创建 Class ekpaideytikoYliko 的对象并将其存储在数组中。