黑马程序员技术交流社区

标题: 各位大虾们,问一个问题,希望得到解答... [打印本页]

作者: 余威宏    时间: 2013-5-22 18:20
标题: 各位大虾们,问一个问题,希望得到解答...
本帖最后由 余威宏 于 2013-5-23 18:29 编辑

public class ArrayTool {
private ArrayTool(){};
public static int getMax(int[] arr){
  int max=0;
  for(int x=1;x<arr.length;x++){
   if(arr[x]>arr[max]){
    max=x;
   }
  }
  return arr[max];
}
}

public class ArrayToolDemo {
public static void main(String[] args){
  int[] arr={1,5,6,3,7,4,9};
  int max=ArrayTool.getMax(arr);
  System.out.println("最大值max为:"+max);
}
}
以上代码,我总感觉没什么错误啊, 可是我用的是eclipse运行的,总是运行不了,是什么原因啊??小弟基础不是太好,希望高手们帮助一下。
运行结果出现以下情况:  java.lang.NoClassDefFoundError: stu2013/ArrayToolDemo
Caused by: java.lang.ClassNotFoundException: stu2013.ArrayToolDemo
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main"

作者: 翟宝海    时间: 2013-5-22 18:40
本帖最后由 翟宝海 于 2013-5-22 18:45 编辑

我只发现,楼主你的代码有一处错误,就是同一个java文件中,只能有一个类被public修饰;然后如果java文件中有类被public修饰,文件名必须与类名一致;
  1. public class ArrayTool //一
  2. {
  3. private ArrayTool(){};
  4. public static int getMax(int[] arr)
  5. {
  6.    int max=0;
  7.    for(int x=1;x<arr.length;x++){
  8.     if(arr[x]>arr[max]){
  9.      max=x;
  10.     }
  11.    }
  12.    return arr[max];
  13. }
  14. }

  15. public class ArrayToolDemo //二
  16. {
  17. public static void main(String[] args){
  18.    int[] arr={1,5,6,3,7,4,9};
  19.    int max=ArrayTool.getMax(arr);
  20.    System.out.println("最大值max为:"+max);
  21. }
  22. }//一和二,只能有一个地方用public修饰,文件名与被public修饰的类名要一致
复制代码
修改代码如下,我机器上运行没问题,不知道楼主你的行不!
  1. public class ArrayTool {
  2. private ArrayTool(){};
  3. public static int getMax(int[] arr){
  4.    int max=0;
  5.    for(int x=1;x<arr.length;x++){
  6.     if(arr[x]>arr[max]){
  7.      max=x;
  8.     }
  9.    }
  10.    return arr[max];
  11. }
  12. }
  13. class ArrayToolDemo {
  14. public static void main(String[] args){
  15.    int[] arr={1,5,6,3,7,4,9};
  16.    int max=ArrayTool.getMax(arr);
  17.    System.out.println("最大值max为:"+max);
  18. }
  19. }
复制代码

作者: 余威宏    时间: 2013-5-22 18:41
{:soso_e154:}  我自己 抢沙发
作者: 李慧声    时间: 2013-5-22 18:42
应该是jar包的问题吧,eclipse对应的jdk找不到路径,你看看jdk的classPath路径是否正确,eclipse有没设置正确,怎么去设置可以在网上查到。程序本身没有问题,我这运行正常,最大值max为:9
作者: 余威宏    时间: 2013-5-22 19:07
我的代码是两个类,在同一个包中,这点忘了告诉大家了不好意思哦...
作者: 余威宏    时间: 2013-5-23 18:29
李慧声 发表于 2013-5-22 18:42
应该是jar包的问题吧,eclipse对应的jdk找不到路径,你看看jdk的classPath路径是否正确,eclipse有没设置正 ...

你说的有道理,我仔细检查了一下,是这个问题,多谢了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2