0

これをできる限り明確に説明しようと思います。プログラムが import ステートメントを介してアクセスするパッケージに使用される 3 つのクラスを変換することにより、割り当てのコードを絞り込もうとしています。これが私の元のコードです:

import javax.swing.JOptionPane;

public class AssignmentTen
{
    public static void main (String[] args)
    {
        System.out.println();
        int num = Integer.parseInt(args[0]);
        int eNumber;
        String input2;
        String input3;
        String input4;
        String input5;
        String input6;
        int input7;
        int input8;
        int input9;
        int input10;

        Employee[] employees = new Employee[num];
        for (int i = 0; i < num; i++)
        {
            eNumber = getInt ("Enter Employee Number:");
            input2 = getString ("Enter Employee First Name:");
            input3 = getString ("Enter Employee Last Name:");
            input4 = getString ("Enter Employee Street:");
            input5 = getString ("Enter Employee City:");
            input6 = getString ("Enter Employee State (Initials):");
            input7 = getInt ("Enter Employee Zip Code (5 Digits):");
            input8 = getInt ("Enter Employee Hire Month (MM):");
            input9 = getInt ("Enter Employee Hire Day (DD):");
            input10 = getInt ("Enter Employee Hire Year(YYYY):");

            Name name = new Name(input2, input3);
            Address address = new Address (input4, input5, input6, input7);
            Date hireDate = new Date (input8, input9, input10);
            employees[i] = new Employee (eNumber, name, address, hireDate);

            System.out.println("#" + employees[i].empNumber + "\n" + employees[i].empName + "\n" + employees[i].empAddress + "\nHire Date: " + employees[i].empHireDate + "\n\n");
        }
    }

    public static int getInt(String paramString)
    {
        String str = JOptionPane.showInputDialog(paramString);
        return Integer.parseInt(str);
    }

    public static String getString(String paramString)
    {
        String str = JOptionPane.showInputDialog(paramString);
        return str;
    }
}

class Employee
{
    Number empNumber;
    Name empName;
    Address empAddress;
    Date empHireDate;

    public Employee(Number empNumber, Name empName, Address empAddress, Date empHireDate)
    {
        this.empNumber = empNumber;
        this.empName = empName;
        this.empAddress = empAddress;
        this.empHireDate = empHireDate;
    }
}

class Name
{
    String firstName;
    String lastName;

    Name(String first, String last)
    {
        firstName = first;
        lastName = last;
    }

    public String toString()
    {
        return firstName + " " + lastName;
    }
}

class Address
{
    String eStreet;
    String eCity;
    String eState;
    int eZipCode;

    Address(String street, String city, String state, int zipCode)
    {
        eStreet = street;
        eCity = city;
        eState = state;
        eZipCode = zipCode;
    }

    public String toString()
    {
        return eStreet + " " + eCity + " " + eState + " " + eZipCode;
    }
}

class Date
{
    int month;
    int day;
    int year;

    Date(int eMonth, int eDay, int eYear)
    {
        month = eMonth;
        day = eDay;
        year = eYear;
    }

    public String toString()
    {
        return month + "/" + day + "/" + year;
    }
}

Name クラス、Address クラス、Date クラスを util というパッケージに入れる必要があります。まず、指示に従って、すべての Java プログラムを My Java Programs (C:\MyJavaPrograms) というフォルダーに整理します。パッケージと思われるものを作成するために、各クラスをコピーして個別のファイルに入れ、「package.util」ステートメントを一番上に置き、Name.java、Address.java という名前を付けました。 、および Date.java を、C:\MyJavaPrograms にある util というフォルダーに入れました。

その後、「import util.*;」というステートメントを入れました。元のコードの先頭にある C:\MyJavaPrograms に配置します。何らかの理由で、ファイルはコンパイルされません。this を読むなど、自分の問題についてすでに多くのグーグル検索を行っていますが、少なくとも何が間違っているのかを理解する限り、役に立ちません。

クラスパスに問題があると思われますが、どうすれば修正できるかわかりません。問題の解決に役立つ場合は、このスレッドに移動して応答の 1 つを入力しないと、コマンド プロンプトで javac コマンドを使用できないことを私は知っています。

理想的には、新しい割り当てをコンパイルし、この質問の上部に投稿したコードとまったく同じように実行するようにしたいと思います。ただし、追加のクラスを含むパッケージを利用している場合を除きます。誰かが私を正しい方向に送ることができれば、本当に感謝しています。

4

2 に答える 2

0
  1. パッケージ定義 (各 .java ファイルの最初の行) を確認してください。「package util;」である必要があります。「package.util」ではありません。
  2. util パッケージ内のクラスは public としてマークされていますか?
于 2013-10-04T03:53:36.730 に答える
0

1)クラスを別々のファイルに分割し、ファイルをパッケージに編成することは良いことです。

2) クラスを「Assignment10.java」と「Util.java」に分割したいとします。どちらもパッケージ「com.myclass」に含まれている可能性があります。次のようにします。

a) ファイル Assignment10.java および Util.java を作成します。

b) 「package com.myclass;」を入れます。両方の上部に

c) 新しいディレクトリ「com\」とサブディレクトリ「myclass\」を作成します

d) 両方の *.java ファイルを com\myclass にコピーします。

e) ルート ディレクトリからコンパイルして実行する

3) IDE (Eclipse や Netbeans など) を使用していた場合は、ディレクトリが自動的に作成されます。

いくつかの優れたチュートリアルを次に示します。

----------------------------- 補足 -------------------- ----------

コマンド ラインからパッケージを使用して Java プログラムをコンパイルおよび実行するには、次の手順を実行します。

1) パッケージ フォルダーを作成します。

mkdir myclass\util

2) .java ファイルを作成する

cd myclass\util
notepad AssignmentTen.java =>

package myclass.util;

public class AssignmentTen {

  public static void main (String[] args) {
    System.out.println ("In main...");
    Name name = new Name("Jack", "Torrance");
    System.out.println ("Exiting main.");
  }

}

notepad Name.java =>

package myclass.util;

public class Name {

  public Name (String first, String last) {
    System.out.println ("My name is " + first + " " + last + "...");
  }

}

3) コンパイル

javac *.java
dir =>

10/04/2013  10:38 AM               589 AssignmentTen.class
10/04/2013  10:36 AM               248 AssignmentTen.java
10/04/2013  10:38 AM               593 Name.class
10/04/2013  10:35 AM               177 Name.java

4) 実行する

cd ..\..
java myclass.util.AssignmentTen =>

In main...
My name is Jack Torrance...
Exiting main.
于 2013-10-04T03:59:16.197 に答える