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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾飞雨 中级黑马   /  2012-6-17 16:52  /  1758 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yufeiant 于 2012-6-17 19:07 编辑

wc:while (num >0)
                        {
                                num /=10;
                                count++;
                        }
                        if (length==count)
                        {
                                for (int x =0;x<length ;x++ )
                                {
                                        arr[x]=sum%10;
                                        sum = sum /10;

                                }
                        }
                        else
                                System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");
                                num  = sc.nextInt();        
                                continue wc;
程序读到最后面如果if判断出的结果是else,需要重新返回上面重新录入,但是这个里的标示符却说是非法的
应该怎么解决这个问题呢,在contiinue 下面还有代码,如果不返回就直接执行到了下面,程序也就会奔溃,
求教高手

评分

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

查看全部评分

8 个回复

倒序浏览
这个是我的完整代码,求教

import java.util.Scanner;
class Encrypt

{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner (System.in);
                System.out.println("现在输入的是加密数字的位数");
                int length =   sc.nextInt();
                int [] arr = new  int [length];
                System.out.println("现在输入加密数字");

                        int num  = sc.nextInt();
                        int sum = num;
                        int count = 0;
               
                        wc:while (num >0)
                        {
                                num /=10;
                                count++;
                        }
                        if (length==count)
                        {
                                for (int x =0;x<length ;x++ )
                                {
                                        arr[x]=sum%10;
                                        sum = sum /10;

                                }
                        }
                        else
                                System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");
                                num  = sc.nextInt();       
                                continue wc;
                for (int x = 0;x<arr.length ;x++ )
                {
                       
                        int z = arr[x]+5;
                        arr[x] = z%10;

                }
                int temp=0;
                 temp  = arr[0];
                 arr[0] = arr[length-1];
                 arr[length-1] = temp;
                for (int x = 0;x<arr.length ;x++ )
                {
                        System.out.print(arr[x]+"   ");
                }
        }
}
回复 使用道具 举报
本帖最后由 曾祥彬 于 2012-6-17 17:55 编辑

首先,我想说,continue只能放在循环里面,你把continue关键字放在循环外面,这本身就是一个错误
第二,你没有任何条件就跳转到 wc 标示符处,也就是说continue后面的代码永远都不可能被执行到,这个编译器也是报错的。
第三,你的代码写的太不规范了吧,if...else...这种语句,就算只有一个代码也应该放到{}里啊!不然出个错误找半天不知道怎么回事。

评分

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

查看全部评分

回复 使用道具 举报
  1. Scanner sc = new Scanner (System.in);
  2.                 System.out.println("现在输入的是加密数字的位数");
  3.                 int length =   sc.nextInt();
  4.                 int [] arr = new  int [length];
  5.                 System.out.println("现在输入加密数字");
  6.                     int num  = sc.nextInt();
  7.                     int sum = num;
  8.                     int count = 0;
  9.                 boolean flag=true;
  10.                 while(flag)
  11.                 {
  12.                     while (num >0)
  13.                     {
  14.                         num /=10;
  15.                         count++;
  16.                     }
  17.                     if (length==count)
  18.                     {
  19.                         for (int x =0;x<length ;x++ )
  20.                         {
  21.                                 arr[x]=sum%10;
  22.                                 sum = sum /10;
  23.                         }
  24.                     }
  25.                     else {
  26.                             System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");                           
  27.                             flag=false;                           
  28.                             num  = sc.nextInt();
  29.                     }
  30.                 }
复制代码
可以考虑设标志flag,下面的代码我没看,只是帮你实现了循环

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
贾飞雨 + 2 赞一个!虽然解决循环,却出现新的问题了 .
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 胡大强 于 2012-6-17 18:19 编辑
  1. import java.util.Scanner;
  2. class Encrypt

  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner sc = new Scanner (System.in);
  7.                 System.out.println("现在输入的是加密数字的位数");
  8.                 int length =   sc.nextInt();
  9.                 int [] arr = new  int [length];
  10.                 System.out.println("现在输入加密数字");

  11.                         int num  = sc.nextInt();
  12.                         int sum = num;
  13.                         int count = 0;
  14.                
  15.                         while (num >0)
  16.                         {
  17.                                 num /=10;
  18.                                 count++;
  19.                         
  20.                         if (length==count)
  21.                         {
  22.                                 for (int x =0;x<length ;x++ )
  23.                                 {
  24.                                         arr[x]=sum%10;
  25.                                         sum = sum /10;
  26.                                                                                 break;   ///情况满足退出循环。。。执行完毕。

  27.                                 }
  28.                         }
  29.                         else     //不满足继续执行循环。。。
  30.                                                         {
  31.                
  32.                                 System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");
  33.                                 num  = sc.nextInt();        
  34.                               
  35.                                                            }
  36.                                                            }
  37.                
  38.                 for (int x = 0;x<arr.length ;x++ )
  39.                 {
  40.                         
  41.                         int z = arr[x]+5;
  42.                         arr[x] = z%10;

  43.                 }
  44.                 int temp=0;
  45.                  temp  = arr[0];
  46.                  arr[0] = arr[length-1];
  47.                  arr[length-1] = temp;
  48.                 for (int x = 0;x<arr.length ;x++ )
  49.                 {
  50.                         System.out.print(arr[x]+"   ");
  51.                 }
  52.                 }
  53. }


  54. /*
  55. 。第一。。代码的规范。。。开始你的else语句里面有三条语句,居然没加大括号。
  56.   第二,continue的用法。。continue的作用是终止循环中的本次循环动作,继续循环中的下一次动作,你的continue那个位置又没加大括号。。。
  57. 第三。循环里,如果你的条件满足了达到了题目的目的,就应该退出来了,break。不然就算你实现了目的,它还会循环的。。
  58. 第四,虽然暂时没明白这题目的意图,但是修改过后代码就这样,能运行。

  59. */
复制代码

评分

参与人数 1黑马币 +2 收起 理由
贾飞雨 + 2 哥们 你给的答案问题并没有解决.

查看全部评分

回复 使用道具 举报
终于搞定谢谢大家,以后一定规范写



import java.util.Scanner;
class Encrypt

{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner (System.in);
                System.out.println("现在输入的是加密数字的位数");
                int length =   sc.nextInt();
                int [] arr = new  int [length];
                System.out.println("现在输入加密数字");
                        int num  = sc.nextInt();
                        int sum = num;
                        int count = 0;
                //对输入的数字进行判断其输入的长度和数字本身是否相符
                        //如果相符,就把这个数字输入数组中,如果不相符,则返回说输入有误
                        //请重新输入。
                        //输入数字的长度和数字本身的长度应该怎么判断呢???
                        //可以把这个数放到循环中,num = num/10;判断一次num是否小于10,小于结束,大于count++,继续循环

                        boolean flag = true;

                while (flag = true)
                {
               
                        while (num >0)
                        {
                                num /=10;
                                count++;
                        }
                        if (length==count)
                        {
                                for (int x =0;x<length ;x++ )
                                {
                                        arr[x]=sum%10;
                                        sum = sum /10;

                                }
                                toBin(arr);
                                break;
                        }
                        else
                        {
                                        System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");
                                        num  = sc.nextInt();       
                                       
                        }
                }
                       
        }
        public static void toBin( int [] arr)
        {   
                for (int x = 0;x<arr.length ;x++ )
                {
                       
                        int z = arr[x]+5;
                        arr[x] = z%10;

                }
                int temp=0;
                 temp  = arr[0];
                 arr[0] = arr[arr.length-1];
                 arr[arr.length-1] = temp;
                for (int x = 0;x<arr.length ;x++ )
                {
                        System.out.print(arr[x]+"   ");
                }
        }

}
回复 使用道具 举报
终于搞定谢谢大家,以后一定规范写



import java.util.Scanner;
class Encrypt

{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner (System.in);
                System.out.println("现在输入的是加密数字的位数");
                int length =   sc.nextInt();
                int [] arr = new  int [length];
                System.out.println("现在输入加密数字");
                        int num  = sc.nextInt();
                        int sum = num;
                        int count = 0;
                //对输入的数字进行判断其输入的长度和数字本身是否相符
                        //如果相符,就把这个数字输入数组中,如果不相符,则返回说输入有误
                        //请重新输入。
                        //输入数字的长度和数字本身的长度应该怎么判断呢???
                        //可以把这个数放到循环中,num = num/10;判断一次num是否小于10,小于结束,大于count++,继续循环

                        boolean flag = true;

                while (flag = true)
                {
               
                        while (num >0)
                        {
                                num /=10;
                                count++;
                        }
                        if (length==count)
                        {
                                for (int x =0;x<length ;x++ )
                                {
                                        arr[x]=sum%10;
                                        sum = sum /10;

                                }
                                toBin(arr);
                                break;
                        }
                        else
                        {
                                        System.out.println("输入的数字有误,请输入和您输入的位数相符的数字,谢谢");
                                        num  = sc.nextInt();       
                                       
                        }
                }
                       
        }
        public static void toBin( int [] arr)
        {   
                for (int x = 0;x<arr.length ;x++ )
                {
                       
                        int z = arr[x]+5;
                        arr[x] = z%10;

                }
                int temp=0;
                 temp  = arr[0];
                 arr[0] = arr[arr.length-1];
                 arr[arr.length-1] = temp;
                for (int x = 0;x<arr.length ;x++ )
                {
                        System.out.print(arr[x]+"   ");
                }
        }

}
回复 使用道具 举报
纠结  怎么回了两遍

点评

大家相互学习,呵呵!  发表于 2012-6-17 19:31
回复 使用道具 举报
yufeiant 发表于 2012-6-17 19:05
终于搞定谢谢大家,以后一定规范写

我只是改了一下几个简单的错误。。。互相学习嘛。。。呵呵~!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马