有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不能在程序中使用包

我会尽可能清楚地解释这一点。我试图通过将使用的三个类转换成程序将通过导入语句访问的包来缩小分配的代码范围。这是我的原始代码:

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'在顶部,然后我给他们起名。java,地址。java和日期。java和我把它们放在一个名为util的文件夹中,该文件夹位于C:\MyJavaPrograms中

之后,我把语句“import util.*;”在我的原始代码的顶部,并将其放入C:\MyJavaPrograms。由于某种原因,该文件无法编译。我已经为我的问题做了很多谷歌搜索,包括reading up on this,这对我没有帮助,至少在我理解问题的程度上是这样

我怀疑我的类路径有问题,尽管我不知道我能做些什么来修复它。如果这有助于解决问题,我知道如果不转到this thread并键入其中一个响应,我就无法在命令提示符中使用javac命令

理想情况下,我希望编译我的新作业,并让它完全按照我在这个问题顶部发布的代码现在所能做的,除了它在使用一个包含额外类的打包包时这样做。如果有人能帮我找到正确的方向,我将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    1. 检查包定义(每个.java文件的第一行)。它应该是“package util;”不是“包”。util'
    2. util包中的类是否标记为public
  2. # 2 楼答案

    1)将类拆分为单独的文件,并将文件组织成一个包,这是一件好事

    2)假设您想将类分为“Assignment10.java”和“Util.java”。它们可能都在“com.myclass”包中。您可以执行以下操作:

    a)创建文件分配10。java和Util。爪哇

    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.