错误: 程序包不存在

s5156520 2014-09-16 12:01:13
本人看的是动力节点 吴世忠老师的java视频,在第5天的视频里,演示package和import关键字的时候,我按照视频上的写了代码,编译的时候出错了.我写的代码如下,有四个文件:
第一个文件:
package com.powernode.test1;

/**求 100至999的所有水仙花数
* 水仙花数是指其每个数位的数字的立方相加等于其本身
* 例如 407 = 4*4*4+0*0*0+7*7*7
* 程序分析,用for循环控制100至999个数
* 每个数分解出 百位 十位 个位
*/
public class Daffodils {

/** 判断i是否是一个水仙花数的方法
* @param i i是要判断的数
* @return 如果i是水仙花数,则返回true
*/
public static boolean isDaffodils(int i){

// 求参数i的百位,十位,各位数字
int baiwei=i/100; //百位
int shiwei=i/10%10; //十位
int gewei=i%100%10; //个位

if((liFang(baiwei)+liFang(shiwei)+liFang(gewei))==i)
return true;
else
return false;
}

//返回i的立方值
public static int liFang(int i){
return i*i*i;
}

}


第 2个文件:
package com.powernode.test1;

public class JinZiTa{

// 实现金字塔的方法
//@pram i 要打印的金zi塔的高度
public void makeJinZiTa(int i){

//用for循环控制层数
for (int j= 0; j<i;j++){
// 先打印金字塔的前半部分空格
for(int k=0;k<i-j;k++){
System.out.print(" ");
}
//再打印*符号,*的个数是2*层数数目+1,
for(int f=0;f<j*2+1;f++){
System.out.print("*");
}
//打印完*换行
System.out.print("\n");
}

}

}


第三个文件:
package com.powernode.test1;

public class Student{

// 类的静态特性叫属性
// 类的动态行为叫方法
nt age;
String name;


public void setName(String _name){
name=_name;
}

public String getName(){
return name;
}

public void setAge(int _age){
age=_age;
}

public int getAge(){
return age;
}

//在类的方法中可以直接访问类的属性
public void study(String kecheng){
System.out.println(name + "正在学习" +kecheng+", 他的年龄: "+age);
}

public Student(int _age,String _name){
age=_age;
name=_name;
}

public Student(){
}

}


第四个文件:
package com.powernode.test;

// 一个java源文件中只能有一个package语句
// 但是可以有多个import语句

// 注意:import com.powernode.test1.*;
// 以上的语句只能导入test1目录中的字节码
// 但是test1目录里面的子目录中的字节码是无法导入的
import com.powernode.test1.*;

//import com.powernode.test1.Narcissus;

public class StudentTest {
public static void main(String[] args) {
//Student stu = new Student("張1",21);
Student stu = new Student();
stu.setAge(23);
stu.setName("张1");
stu.study("CoreJava");

System.out.println("====================");

Narcissus n = new Narcissus();
for(int i = 100;i<1000;i++){
if(n.isNarcissus(i)){
System.out.println(i + " 是水仙花数!");
}
}

System.out.println("====================");
JinZiTa1 ta = new JinZiTa1();
ta.printTa(10);
}
}


javac -d . xx.java 从第一个到第四个挨个编译,最后javac -d . StudentTest.java 报错如下:



如果 一次性 这样编译 javac -d . *.java 错误更多. 但是我用 javac -d . *.java 编译教程里代码 ,一次OK, 我想知道为什么我的出错了.

教程里的代码如下:
第一个文件:
package com.powernode.test1;
/*
【程序4】
打印出所有的"水仙花数",所谓"水仙花数"是指一
个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方
+3的三次方。
1.程序分析:利用for循环控制100-999个数,
每个数分解 出个位,十位,百位。

*/
public class Narcissus {
/**
* 判断指定的num是否是水仙花数
* @param num 要判读的数
* @return 是否是水仙花数,true 表示是
*/
public boolean isNarcissus(int num){
// 分别从这个数中拆分出个位数值,十位数值,百位数值
int baiWei = num/100; //百位数值
int shiWei = num/10%10; // 十位数值
int geWei = num%100%10; // 个位数值

if(num == liFang(baiWei) + liFang(shiWei) + liFang(geWei) ){
return true;
}else{
return false;
}
}

/**
* 计算指定的数值的立方
* @param num 要计算的数
* @return 该数的立方
*/
private int liFang(int num){
return num * num * num;
}
}


第二个文件:
package com.powernode.test1;

public class JinZiTa1 {


/**
* 打印金子塔
* @param level 金字塔的层数
*/
public void printTa(int level){
for(int i = 0;i<level;i++){

// 控制金子塔每层前面的空格
// 如果总共是5层,则第一层要打印4个空格,
// 第二层要打印3个空格,则控制空格个数的
// 表达式为j<n-i
for(int j=0;j<level-i;j++ ){
System.out.print(" ");//空格数
}

// 控制每层金字塔打印的*号的个数
// 当i=0时,第一层金字塔 :for(int k = 0; k <= 0; k++),打印一个*号
// 当i=1时,第二层金字塔 :for(int k = 0; k <= 2; k++):打印三个*号
for(int k=0;k<=i*2;k++){
System.out.print("*");//星号数
}
System.out.println("");
}
}

}


第三个文件:
// java源文件中只能有一个package语句,并且只能放在代码的第一行
// 包明的命名规范:所有的包名都是小写的
// 动力节点的域名 powernode.com;
// 实际命名包名的时候:com.powernode.xxx
// java中打包是为了把功能相同的一些类组织到一起
package com.powernode.test1;

// 类里面是什么?属性和方法构造方法
public class Student{
// 对于成员变量,系统会自动的进行初始化(0,null)
private int age;
private String name;

public void setName(String _name){
name =_name;
}

public String getName(){
return name;
}

public void setAge(int _age){
/*
if(_age <0 || _age >130){
System.out.println(_age + " 不是有效的年龄");
}else{
age = _age;
}
*/

if(_age <0 || _age >130){
System.out.println(_age + " 不是有效的年龄");
return;
}
age = _age;
}

public int getAge(){
return age;
}

public void study(String className){
System.out.println(name + " 在学习:" + className + " 他的年龄是:" + age);
}


// 当我们自己提供了有参数的构造方法之后,系统默认的无参数的构造方法就不会再提供了
// 如果还想要用无参数的构造方法,只能自己提供
// 在一个类中,可以同时提供多个构造方法,这种形式叫做:构造方法重载(Overload)
// 必须是构造方法的参数列表不同(参数的个数,参数的类型,参数的顺序)
public Student(String _name,int _age){
name =_name;
age =_age;
}

public Student(){
}
}


第四个文件:
package com.powernode.test;

// 一个java源文件中只能有一个package语句
// 但是可以有多个import语句

// 注意:import com.powernode.test1.*;
// 以上的语句只能导入test1目录中的字节码
// 但是test1目录里面的子目录中的字节码是无法导入的
import com.powernode.test1.*;

//import com.powernode.test1.Narcissus;

public class StudentTest {
public static void main(String[] args) {
//Student stu = new Student("張1",21);
Student stu = new Student();
stu.setAge(23);
stu.setName("张1");
stu.study("CoreJava");

System.out.println("====================");

Narcissus n = new Narcissus();
for(int i = 100;i<1000;i++){
if(n.isNarcissus(i)){
System.out.println(i + " 是水仙花数!");
}
}

System.out.println("====================");
JinZiTa1 ta = new JinZiTa1();
ta.printTa(10);
}
}




...全文
771 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我把你的4个代码,全部编译了, 没有问题 问题是你在别的类,引用 这4个类的时候 ,访问权限出了问题
rumlee 2014-09-16
  • 打赏
  • 举报
回复
从报错的信息看,与你的代码一比对,可以肯定你编译的代码和你传上来的代码不一致。 另外建议用一个ide吧,你这种错误,不用编译,ide直接就给你提示了。
  • 打赏
  • 举报
回复
从你提供的错误信息看是 ,访问权限的问题 ,不是程序包的问题 是你用 public protected private 访问权限控制符的问题 试着改一下吧
串联谐振双有源桥(SR-DAB)DC-DC变换器闭环仿真研究内容概要:本文围绕串联谐振双有源桥(SR-DAB)DC-DC变换器的闭环仿真展开研究,重点探讨其在电力电子系统中的动态响应特性与控制策略。通过对SR-DAB变换器建立数学模型,并结合Matlab/Simulink进行闭环仿真,分析系统在不同工作条件下的电压、电流波形及功率传输效率,验证控制算法的有效性与稳定性。研究涵盖系统建模、控制器设计(如PI控制)、软开关实现条件、抗干扰能力以及动态调节性能,旨在提升变换器在新能源、储能、数据中心供电等场景中的可靠性和能效水平。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、微电网、电力系统仿真等相关领域的科研人员与工程技术人员。; 使用场景及目标:①用于高校及科研机构开展DC-DC变换器控制策略的教学与实验;②为工业界在高效率隔离型功率变换系统的设计与优化提供仿真依据和技术支撑;③服务于数据中心、电动汽车、可再生能源并网等场景下的电源系统研发。; 阅读建议:建议读者结合Matlab代码实践仿真流程,重点关注系统建模与控制器参数整定部分,通过调整负载、输入电压等条件观察系统响应,深入理解闭环控制对变换器性能的影响机制。
内容概要:本文介绍了FastReport VCL/FMX/LCL 2026.2.4版本的更新内容,重点涵盖核心引擎、图形处理、用户界面及导出功能的优化与修复。主要更新包括修复了Developer Express兼容性问题、TfrxSVGGraphic在TImage中的显示问题、PDF/A导出合规性、EMF图像旋转异常,以及ReportTree拖拽功能等问题。同时,部分模块新增了HTMLTags对XLSX导出的支持、内置右键菜单和新图标,并改进了FastCube组件的元素调整体验。此外,还修复了CPP脚本中Result参数名的Bug以及自定义过滤器中OR操作失效的问题。; 适合人群:使用Delphi或Lazarus进行开发,且涉及报表设计与数据展示功能的中高级开发者;尤其适用于需要集成FastReport控件到企业级应用中的技术人员。; 使用场景及目标:①提升报表系统在不同平台(VCL/FMX/LCL)下的稳定性和兼容性;②满足PDF/A标准的文档归档需求;③优化用户交互体验,如拖拽操作与元素缩放;④增强脚本支持与数据集字段识别能力,确保开发效率与功能完整性。; 阅读建议:建议结合官方更新链接和实际项目中使用的FastReport模块对照查看,重点关注自身所用组件(如VCL、FMX或Lazarus版)的具体修复项,及时升级以规避已知问题并利用新特性优化报表功能。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧