黑马程序员技术交流社区

标题: 代码没错吧? 运行7个错误 需要class, interface... [打印本页]

作者: 张智安    时间: 2013-10-25 22:53
标题: 代码没错吧? 运行7个错误 需要class, interface...
class Demo
{
        public static void main(String[] args)
        {
                int day = 0;
       
                for(int x = 3000;x>=5;day++)
                        {
                                x =x>>2;
                        }
                System.out.println("day="+day);
        }
}

什么问题哦?


作者: Yuan先生    时间: 2013-10-25 22:59
亲自试了一下,代码本身没问题,有错的话就是系统配置或程序里有中文字符之类的,你把 x = x >> 2 重新输入试试
  1. public class Demo {
  2.         public static void main(String[] args) {
  3.                 int day = 0;

  4.                 for (int x = 3000; x >= 5; day++) {
  5.                         x = x >> 2;
  6.                 }
  7.                 System.out.println("day=" + day);
  8.         }
  9. }
复制代码

作者: 张智安    时间: 2013-10-25 23:05
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int day = 0;
  6.        
  7.                 for(int x = 3000;x>=5;day++)
  8.                         {
  9.                                 x = x>> 2;
  10.                         }
  11.                 System.out.println("day="+day);
  12.         }
  13. }
复制代码
错误信息:

E:\java\day01>javac 123.java
123.java:1: 错误: 需要class, interface或enum
锘縞lass Demo
^
123.java:3: 错误: 需要class, interface或enum
        public static void main(String[] args)
                      ^
123.java:7: 错误: 需要class, interface或enum
                for(int x = 3000;x>=5;day++)
                ^
123.java:7: 错误: 需要class, interface或enum
                for(int x = 3000;x>=5;day++)
                                 ^
123.java:7: 错误: 需要class, interface或enum
                for(int x = 3000;x>=5;day++)
                                      ^
123.java:10: 错误: 需要class, interface或enum
                        }
                        ^
123.java:12: 错误: 需要class, interface或enum
        }
        ^
7 个错误    都不行
作者: 匡文    时间: 2013-10-25 23:55
你这个是java源文件的保存文本格式不正确,我之前也遇到过你一模一样的状况,乱码了。
文本编辑格式选为“ANSI”格式就会好了,我也不知道你是什么开发环境,所以没法给你具体步骤,你仔细翻翻菜单。

附上我的notepad++的设置的地方给你参考。

作者: 张智安    时间: 2013-10-25 23:59
匡文 发表于 2013-10-25 23:55
你这个是java源文件的保存文本格式不正确,我之前也遇到过你一模一样的状况,乱码了。
文本编辑格式选为“A ...

我用的也是NOTEPAD++  是选ANSI编码格式吗?
作者: 匡文    时间: 2013-10-26 00:04
张智安 发表于 2013-10-25 23:59
我用的也是NOTEPAD++  是选ANSI编码格式吗?

感情NOTEPAD++都会有这个问题啊。。。。
两个步骤。
首先,设置——》首选项——》新建,然后按照我上面那张图选好,点关闭。
第二步,打开你的那个java源代码,格式——》以ANSI编码。保存,一切妥妥的。
作者: 匡文    时间: 2013-10-26 00:04
张智安 发表于 2013-10-25 23:59
我用的也是NOTEPAD++  是选ANSI编码格式吗?

感情NOTEPAD++都会有这个问题啊。。。。
两个步骤。
首先,设置——》首选项——》新建,然后按照我上面那张图选好,点关闭。
第二步,打开你的那个java源代码,格式——》以ANSI编码。保存,一切妥妥的。
作者: wenbaoxing    时间: 2013-10-26 00:06
我想是这个错了:
把文件名改成Demo.java,你再试试

文件名和含有main函数的类的名称要一致,首字母大写,不可以数字开头

作者: wenbaoxing    时间: 2013-10-26 00:22
请看我的注释:


  1. //类名写成Test,文件名就写成Test.java
  2. //如果类名是Test,文件名是123.java,那么你也可以再命令窗口这样输入:
  3. //                                                               先输入:javac 123.java
  4. //                                                               再输入:java  Test
  5. class Test
  6. {
  7.         public static void main(String[] args) throws Exception
  8.         {
  9.                
  10.                 int day = 0;
  11.         
  12.                 //等号改成英文,在英文状态下输入 >>
  13.                                 for(int x=3000;x>=5;day++)
  14.                         {
  15.                                 x =x>>2;
  16.                         }
  17.                 System.out.println("day="+day);
  18.         }
  19. }
复制代码

作者: wenbaoxing    时间: 2013-10-26 00:24
找我那样修改了代码后,就可以编译运行成功了。
作者: 张智安    时间: 2013-10-26 09:16
wenbaoxing 发表于 2013-10-26 00:22
请看我的注释:

那些都没错,是编译环境的编码模式错了
作者: 麦子    时间: 2013-10-26 10:06
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int day = 0;
  6.         
  7.                 for(int x = 3000;x>=5;day++)
  8.                         {
  9.                                 x = x >>2;
  10.                         }
  11.                 System.out.println("day="+day);
  12.         }
  13. }
复制代码
程序没问题,哥么输入代码是最好就用英文美式键盘  输入法 ,不要在输入法上切来切去的,很容易打错了的,中文输入法下的很多标点符号与英文有区别的哦,那么采用高级编程工具会有相应提示,养成好的习惯才能成为出色的程序员哦

顺带解释下: x = x >>2   相当于x = x / 2^2;   算数右移:低位溢出,符号位不变,并用符号位补溢出的高位。
作者: 张智安    时间: 2013-10-26 10:17
本帖最后由 张智安 于 2013-10-26 10:18 编辑
麦子 发表于 2013-10-26 10:06
程序没问题,哥么输入代码是最好就用英文美式键盘  输入法 ,不要在输入法上切来切去的,很容易打错了的, ...

标点符号是没错的,就是我用的Notepad++编辑器的编码不对,导致的乱码 至于你后面的解释我没看懂:( , 我先在就知道用右移的好处的计算速度快.
哦 现在读懂了 - -!  太绕了点

作者: ヅ飞飞    时间: 2013-10-26 13:02
楼主,你的for循环应该day--,如果用day++是死循环。
作者: 起猿    时间: 2013-10-26 14:08
程序没有错误,是你编辑软件的格式编码错误,我也经常遇见,最终原因可能是你最近更改了软件的显示字体,而这显示字体中部分字体编码后无法被Java虚拟机识别,我也遇到过这样的问题,尤其是eclipse里。经常出现。建议用程序默认字体,看着不方便就更改一下大小。避免以后更多的麻烦。




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