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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*角谷猜想*/
  2. /*任意给定一个自然数,若它为偶数则除以2,若它为奇数则乘以3,得到一个新的自然数,照这样计算下去,若干次后必然得到1*/
  3. import java.util.Scanner;
  4. import java.io.*;
  5. class jiaogu
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 int count=1;
  10.                 Scanner in=new Scanner(System.in);
  11.                 int n=nextInt();
  12.                 while(n!=1&&count<=1000)  //设定范围
  13.                 {
  14.                         if(n%2==0)  //n为偶数
  15.                         {
  16.                                 System.out.print(n/2);
  17.                                 n=n/2;
  18.                         }
  19.                         else{    //n为奇数情况
  20.                                 System.out.print(n*3+1);
  21.                                 n=n*3+1;   ///这里才是关键。。奇数*3还是奇数。。。所以还要加1.。。。
  22.                         }
  23.                         count++;
  24.                 }
  25.                 if(count<=1000&&n==1){
  26.                         System.out.print("角谷猜想正确!");
  27.         }
  28. }
复制代码

7 个回复

倒序浏览
本帖最后由 邱国 于 2012-6-16 02:35 编辑

第11行代码应该是:int n=in.nextInt();
回复 使用道具 举报
本帖最后由 郑冬 于 2012-6-16 06:40 编辑


import java.util.Scanner;

import java.io.*;

public class jiaogu
{

        public static void main(String[] args)
        {

                int count=1;

                Scanner in=new Scanner(System.in);

                int n=in.nextInt();

                while(n!=1&&count<=1000)  //设定范围

                {

                        if(n%2==0)  //n为偶数

                        {

                                 n=n/2;
                                 System.out.println("偶数除2:" + n);
                              

                        }

                        else{    //n为奇数情况
                                 n=n*3+1;
                              
                                
                                System.out.println("奇数乘3+1:" + n);

                                  ///这里才是关键。。奇数*3还是奇数。。。所以还要加1.。。。

                        }

                        count++;

                }

                if(count<=1000&&n==1){

                        System.out.print("角谷猜想正确!");

        }

}
}
这样修改后可以输出,而且看起来输出效果好多了
回复 使用道具 举报
int n=nextInt();
Java中方法的调用需要用:对象.方法 或者:类.静态方法
故应改为:int n = in.nextInt();
回复 使用道具 举报
虽然还不懂,但在努力中,顶一下
回复 使用道具 举报
你的程序 编译都不能通过  由怎么能运行呢?就像火炎说的  方法的调用 就两种情况  
回复 使用道具 举报
邱国 发表于 2012-6-16 02:33
第11行代码应该是:int n=in.nextInt();

还是输入不了。。。
回复 使用道具 举报
张頔 中级黑马 2012-6-16 14:49:05
8#
/*角谷猜想*/
/*任意给定一个自然数,若它为偶数则除以2,若它为奇数则乘以3,得到一个新的自然数,照这样计算下去,若干次后必然得到1*/
import java.util.Scanner;
import java.io.*;
class Demo
{
        public static void main(String[] args)
        {
                int count=1;
                Scanner in=new Scanner(System.in);
                int n=in.nextInt();                            //这个地方是in.nextInt()
                while(n!=1&&count<=1000)  //设定范围
                {
                        if(n%2==0)  //n为偶数
                        {
                                System.out.println(n/2);
                                n=n/2;
                        }
                        else{    //n为奇数情况
                                System.out.println(n*3+1);
                                n=n*3+1;   ///这里才是关键。。奇数*3还是奇数。。。所以还要加1.。。。
                        }
                        count++;
                }
                if(count<=1000&&n==1){
                        System.out.print("角谷猜想正确!");
        }
        }
}//最后少了一个括号

我已经验证可以输出结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马