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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄兴旺 金牌黑马   /  2013-4-7 00:46  /  2030 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 2013-4-7 12:39 编辑
  1. import java.util.*;
  2. class  Main
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner cin = new Scanner(System.in);
  7.                 int n = cin.nextInt();
  8.                 int m = cin.nextInt();
  9.                 int x,y;
  10.                 while (n!=0||m!=0)
  11.                 {
  12.                         if((m-n*2)%2==0)
  13.                     {
  14.                         y=(m-n*2)/2;
  15.                         x=n-y;
  16.                                 if(x>=0&&y>=0)
  17.                                         System.out.print(x);
  18.                                     System.out.println(y);
  19.                                 else
  20.                                         System.out.println("Error");
  21.                         }
  22.                         else
  23.                         {
  24.                             System.out.println("Error");
  25.                         }
  26.                 }
  27.         }
  28. }
复制代码
大神  怎么进了死循环。?

8 个回复

倒序浏览
本帖最后由 赵家阳 于 2013-4-7 01:06 编辑

1,你肯定会进入死循环的呀,你的while循环里面根本就没有跳出循环的条件(或者语句),你怎么让他结束循环呢?只要你的n和m有一个不为0,那么while判断永远为true,这个循环就会一直下去。转啊。。转啊。。转啊。。转啊。。转啊。。转啊。。。。
2,
  1. if(x>=0&&y>=0)
  2.        System.out.print(x);
  3.        System.out.println(y);
  4. else
  5.        System.out.println("Error");
复制代码
if下面的两个println语句是是什么意思?为什么不加{},你是想每次都让y输出么?再说了,你不加括号else就被打入冷宫了,编译是怎么通过的???
回复 使用道具 举报
死循环 是因为程序没有出口,不知道你为什么要用循环,变量m,n的值,同时为0,就没意义了,所以死循环,把while改成if ,我想可能会好点
回复 使用道具 举报
赵家阳 发表于 2013-4-7 01:02
1,你肯定会进入死循环的呀,你的while循环里面根本就没有跳出循环的条件(或者语句),你怎么让他结束循环 ...

ok  我看看  谢谢
回复 使用道具 举报
wanggang 发表于 2013-4-7 01:17
死循环 是因为程序没有出口,不知道你为什么要用循环,变量m,n的值,同时为0,就没意义了,所以死循环,把w ...

谢谢 谢谢
回复 使用道具 举报
  1. import java.util.*;
  2. class  Test
  3. {
  4.         public static void main(String[] args)
  5.     {
  6.                 Scanner cin = new Scanner(System.in);
  7.                 int n = cin.nextInt();
  8.                 int m = cin.nextInt();
  9.                 int x,y;
  10.                 if(n>0 && m>0){
  11.                         if((m-n*2)%2==0){
  12.                                 y=(m-n*2)/2;
  13.                 x=n-y;
  14.                                 if (x>=0 && y>=0)
  15.                                 {
  16.                                         System.out.println(x);
  17.                                         System.out.println(y);
  18.                                 }else{
  19.                                         System.out.println("Error");
  20.                                 }
  21.                                        
  22.                         }
  23.                         else{
  24.                 System.out.println("Error");
  25.                         }
  26.                 }else{
  27.                         System.out.println("不能为负数");
  28.                 }
  29.         }
  30. }
复制代码
回复 使用道具 举报
一建议你直接用for循环暴力求解  //注意结束条件 万一给你的即使一个无解的你就悲剧了
二建议你用数学公式推算出来  // 注意无解的情况
其他没了...好好做吧

回复 使用道具 举报
似水像火 发表于 2013-4-7 09:37
一建议你直接用for循环暴力求解  //注意结束条件 万一给你的即使一个无解的你就悲剧了
二建议你用数学公式 ...

小火子 就这样走了  不好吧
回复 使用道具 举报
编译通不过的。。还有,后面应该不用输出两次“Error”吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马