A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);
        }
}

什么问题哦?

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
亲自试了一下,代码本身没问题,有错的话就是系统配置或程序里有中文字符之类的,你把 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. }
复制代码
回复 使用道具 举报
  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 个错误    都不行
回复 使用道具 举报
你这个是java源文件的保存文本格式不正确,我之前也遇到过你一模一样的状况,乱码了。
文本编辑格式选为“ANSI”格式就会好了,我也不知道你是什么开发环境,所以没法给你具体步骤,你仔细翻翻菜单。

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

点评

太感谢啦!~!~版主 求给加技术分!  发表于 2013-10-26 00:03

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
匡文 发表于 2013-10-25 23:55
你这个是java源文件的保存文本格式不正确,我之前也遇到过你一模一样的状况,乱码了。
文本编辑格式选为“A ...

我用的也是NOTEPAD++  是选ANSI编码格式吗?
回复 使用道具 举报
张智安 发表于 2013-10-25 23:59
我用的也是NOTEPAD++  是选ANSI编码格式吗?

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

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

文件名和含有main函数的类的名称要一致,首字母大写,不可以数字开头
回复 使用道具 举报
请看我的注释:


  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. }
复制代码
回复 使用道具 举报
找我那样修改了代码后,就可以编译运行成功了。
回复 使用道具 举报

那些都没错,是编译环境的编码模式错了
回复 使用道具 举报
麦子 中级黑马 2013-10-26 10:06:04
12#
  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:18 编辑
麦子 发表于 2013-10-26 10:06
程序没问题,哥么输入代码是最好就用英文美式键盘  输入法 ,不要在输入法上切来切去的,很容易打错了的, ...

标点符号是没错的,就是我用的Notepad++编辑器的编码不对,导致的乱码 至于你后面的解释我没看懂:( , 我先在就知道用右移的好处的计算速度快.
哦 现在读懂了 - -!  太绕了点
回复 使用道具 举报
楼主,你的for循环应该day--,如果用day++是死循环。
回复 使用道具 举报
起猿 中级黑马 2013-10-26 14:08:21
15#
程序没有错误,是你编辑软件的格式编码错误,我也经常遇见,最终原因可能是你最近更改了软件的显示字体,而这显示字体中部分字体编码后无法被Java虚拟机识别,我也遇到过这样的问题,尤其是eclipse里。经常出现。建议用程序默认字体,看着不方便就更改一下大小。避免以后更多的麻烦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马