私の静的メソッドからの私のオブジェクト配列に値を渡す方法

LazosのPap:

私は私の読み取りメインクラスである3つのクラス1 EyMain有する「N」の値> 100私のオブジェクトarrays.Then Iコールの数作成writeUSB()メソッド Iは、オブジェクトの配列を埋めます。

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);

        } 
}

私の他のクラスは、私は私の2つの静的メソッドを持つeYMethodsあるwriteUSB私は私のかどうかを確認したいので、私は私の配列に格納されている最後の要素のポインタを返すようにしたいというメモリ空間は>私は、配列と更新からそれを削除したい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());
    }
}}

そして、最後のクラスは、私は私のプライベート変数は、getとセット、私のコンストラクタと私はそれから、ファイル名と拡張子をしたいという文字列メソッドgetFileTypeを持っているというのが私のekapideytikoYlikoです。例えば(.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の方法スキャナからのデータは、私は私の最初のタイプにエラーが発生します。

Goion:

Javaでは、あなたはそれがあなたのケース内のオブジェクトの配列を作成する場合:

ekpaideytikoYliko usb[] = new ekpaideytikoYliko[n];

Javaは単純にこれを行います

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

出典:変数の初期値

すべての参照型(§4.3)の場合、デフォルト値はnullです。

今ときにeYMethodsその要素がnullであるため、あなたがメソッドを呼び出してくださいしようとすると、それだけでnullポインタを返します。あなたがオブジェクトを作成し、配列にそのオブジェクトを格納する必要があることを修正します。このようなもの:

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はクラスのオブジェクトを作成しekpaideytikoYliko、配列に格納します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=281789&siteId=1