黑马程序员技术交流社区

标题: 程序提示错误:非法表达式开始, 为什么啊?? [打印本页]

作者: 陶辰    时间: 2012-11-20 20:48
标题: 程序提示错误:非法表达式开始, 为什么啊??
以下程序提示错误:非法表达式开始,指示的是“static void max(){ ”出错了,为什么啊??在线public class FindMax{
  public static void main(String args[]){
    static void max(){  
     if(args.length>=10){
      int sign=0;;
      for(int i=1;i<args.length;i++)
      if(arg[sign]<args[i]){
        sign=i;
      }
     System.out.println("其中最大值是"+args[sign]);
     }
     else{
      System.out.println("不够十个数字,无法进行比较,请重新输入10个数字");
     
     }
    }
    public void print(){
     for(int i=0;i<args.length;i++)
      System.out.print(args[i]+" ");
    }
    System.out.pirntln("这些数字分别是:"+print());
    print();
    max();
     
  }
}
作者: 王震阳老师    时间: 2012-11-20 21:14
本帖最后由 王震阳 于 2012-11-20 21:18 编辑

是以为你的方法 定义在了Main()方法中了。其实你的方法应该定义在main()方法之外。还有: public static void main(String args[])这句话也不对吧。
作者: 金鑫    时间: 2012-11-20 21:19
本帖最后由 金鑫 于 2012-11-20 21:21 编辑

你的代码应该没贴完,我就自己发现的问题说一下:
static void max(){ }这里出错的原因很简单,因为你这虽然是一个静态函数,但是你把这个静态函数定义在了主函数之内了。函数之内是不能定义函数的,所以他说你非法表达式。
你把自己写的函数放到主函数的外面,然后在主函数内直接调用max()和print()方法应该就可以了
作者: 王震阳老师    时间: 2012-11-20 21:30
  1. public class FindMax
  2. {
  3.          public static void main(String[] args)
  4.         {
  5.                 max(args);
  6.                 print(args);
  7.         }
  8.         public static void max(String[] args)
  9.         {  
  10.                 if(args.length>=10)
  11.                 {
  12.                         int sign=0;;
  13.                         for(int i=1;i<args.length;i++)
  14.                         if(Double.valueOf(args[sign])<Double.valueOf(args[i]))
  15.                                 {
  16.                                         sign=i;
  17.                                 }
  18.                         System.out.println("其中最大值是"+args[sign]);
  19.      }
  20.      else
  21.                  {
  22.                 System.out.println("不够十个数字,无法进行比较,请重新输入10个数字");
  23.                 }
  24.     }
  25.     public static void print(String[] args)
  26.         {
  27.                 for(int i=0;i<args.length;i++)
  28.                 System.out.print(args[i]+" ");
  29.     }
  30. }
复制代码
在尽量尊重你的源代码的基础上,给你改写了一下,已经可以按照你想要的运行了。
希望你继续努力。

这个方法怪怪的.jpg (33.78 KB, 下载次数: 70)

这个方法怪怪的.jpg

作者: 王震阳老师    时间: 2012-11-20 21:32
金鑫 发表于 2012-11-20 21:19
你的代码应该没贴完,我就自己发现的问题说一下:
static void max(){ }这里出错的原因很简单,因为你这虽 ...

楼主可能没有搞明白java的结构。应该建议他看看毕老师的java基础视频部分。不过楼主通过java Findmax 的时候输入参数进行比较最大值的想法还是不错的。不要误会哦,我知道不也不是楼主。
作者: 王震阳老师    时间: 2012-11-20 21:35
还有一点忘说了,String类型的两个数是不可以直接比较大小的。在运行java FindMax的时候输入的参数虽然看似数字其实是以字符串的形式被接受的。因此要想让String可以比较,可以将String类转化为Double.valueOf(String str)的double型。
作者: 杜正冬    时间: 2012-11-20 22:19
本帖最后由 杜正冬 于 2013-2-2 23:26 编辑

main(String args[]){



应该这样写
public static void main(String [] args){}//String 后面写中括号 java这么要求的
(原来当初的我 很傻很天真 改:2013.2.2)




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