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

© 电玩 中级黑马   /  2013-4-19 22:32  /  9471 人查看  /  112 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 电玩 于 2013-4-20 12:00 编辑

要成为一个实力强劲的码农,光看视频是不够的,还需要不断的敲代码,敲代码,敲代码。
敲代码要有意义,要有思想。所以,以问题驱动的方式敲代码是最有效的。
在这个帖子里,我打算将《java语言程序设计》(美 Y.Danilei Liang)这本书中的编程练习题敲一遍。


请管理员有空改改我的名字
目前ID:电玩
改名ID:戴伟

评分

参与人数 3技术分 +1 黑马币 +24 收起 理由
王怀亮 + 12 加油
曹睿翔 + 12 不占你楼层,继续加油,会不定期为你加技术.
HM汪磊 + 1 赞一个!

查看全部评分

112 个回复

正序浏览
本帖最后由 电玩 于 2013-5-24 11:56 编辑

近来忙着准备技术博客 、做入学考试题。没有时间更新。但我知道javaee和安卓都需要有扎实的javase基础。而这本书可以为我们打下坚实的基础。

//程序清单4-15 使用确认对话框控制循环
import javax.swing.JOptionPane;
class  SentinelValueUsingConfirmationDialog
{
public static void main(String[] args)
{
       int sum=0;
    int option=JOptionPane.YES_OPTION;
    while (option==JOptionPane.YES_OPTION)
    {
     String dataString =JOptionPane.showInputDialog("请输入一个整数:");
     int data=Integer.parseInt(dataString);
     sum=sum+data;
     option=JOptionPane.showConfirmDialog(null,"继续?");
    }
  JOptionPane.showMessageDialog(null,"总数和为"+sum);
}
}

更多图片 小图 大图
组图打开中,请稍候......
回复 使用道具 举报
yooc 中级黑马 2013-5-23 12:06:45
112#
电玩 发表于 2013-5-23 08:51
当然,是翻译的。应该译的不错,因为译者就是用这个教材在国内大学上课的老师,所以是内行人,再加上认真 ...

谢谢楼主!榜样的力量!
回复 使用道具 举报
yooc 发表于 2013-5-22 22:36
mark下还请原谅,等自己读这本书时会自己做一遍然后再看看楼主的思想,加深理解!同时问下楼主,看的是英文 ...

当然,是翻译的。应该译的不错,因为译者就是用这个教材在国内大学上课的老师,所以是内行人,再加上认真就一定能将事情办好。
回复 使用道具 举报
yooc 中级黑马 2013-5-22 22:36:23
110#
mark下还请原谅,等自己读这本书时会自己做一遍然后再看看楼主的思想,加深理解!同时问下楼主,看的是英文原版还是译版,我正想买
回复 使用道具 举报
qiudengqiang 发表于 2013-5-17 18:14
lz威武啊!这样也可以,哈哈!

是的,你也可以开一个专贴,自问自答。每做完三十道题可以加2分技术分。而每页正好是30贴,所以当你写到13页时就有26分的技术分了。
现在只有4页,所以这个帖子已经挣了8分。
因此我的其他分数是靠论坛活动得到的。
回复 使用道具 举报
//程序清单4-14 显示素数(质数)
class  PrimeNumber
{
        public static void main(String[] args)
        {
                final int NUMBER_OF_PRIMES=50;
                final int NUMBER_OF_PRIMES_PER_LINE=10;
                int count=0;
                int number=2;

                System.out.println("前50个素数是\n");

                while (count<NUMBER_OF_PRIMES)
                {
                        boolean isPrime=true; //判定是素数
                        for (int divisor=2;divisor<=number/2 ;divisor++ )
                        {
                                if (number%divisor==0)
                                {
                                        isPrime=false;
                                        break;

                                }
                        }
                        if (isPrime)
                        {
                                count++;
                                if (count%NUMBER_OF_PRIMES_PER_LINE==0)
                                {
System.out.println(number);
                                }else
                                        System.out.print(number+"  ");
                        }
                        number++;
                }


        }
}
/*
前50个素数是

2  3  5  7  11  13  17  19  23  29
31  37  41  43  47  53  59  61  67  71
73  79  83  89  97  101  103  107  109  113
127  131  137  139  149  151  157  163  167  173
179  181  191  193  197  199  211  223  227  229
*/
回复 使用道具 举报
To 金牌黑马 2013-5-17 18:14:27
107#
lz威武啊!这样也可以,哈哈!



                                                                      黑马云青年
回复 使用道具 举报
张林敏 发表于 2013-5-17 11:38
顶一个.....

谢谢!        
回复 使用道具 举报
顶一个.....
回复 使用道具 举报
//程序清单4-13 使用break语句改写猜数字的程序
import java.util.Scanner;
class  GuessNumberUsingBreak
{
        public static void main(String[] args)
        {
                int number =(int)(Math.random()*101);
                Scanner input=new Scanner(System.in);

               
                while (true)
                {
         System.out.print("\n请输入您猜一个魔法数字(0到100之间):  ");
                 int guess=input.nextInt();
                 if (guess==number)
                 {
                         System.out.println("您猜对了,这个数字是"+number);
                         break;
                 }else if (guess>number)
                 {
                         System.out.println("您猜的数字太大了!");
                 }else
                         System.out.println("您猜的数字太小了!");
                }
        }
}
/*
请输入您猜一个魔法数字(0到100之间):  50
您猜的数字太小了!

请输入您猜一个魔法数字(0到100之间):  75
您猜的数字太小了!

请输入您猜一个魔法数字(0到100之间):  90
您猜的数字太小了!

请输入您猜一个魔法数字(0到100之间):  95
您猜的数字太小了!

请输入您猜一个魔法数字(0到100之间):  96
您猜对了,这个数字是96
*/
回复 使用道具 举报
//程序清单4-12 关键字continue 将1到20中除去10和11的整数都加到sum中来
class  TestContinue
{
        public static void main(String[] args)
        {
                int sum=0;
                int number=0;
                while (number<20)
                {
                        number++;
                        if (number==10 || number==11)
                               continue;
                        sum=sum+number;
                }

                System.out.println("总数是"+sum);
        }
}
/*
总数是189
*/
回复 使用道具 举报
葛杨杨 发表于 2013-5-16 11:05
不是吧, 这样也可以?

是的,你也可以开一个专贴,自问自答。每做完三十道题可以加2分技术分。而每页正好是30贴,所以当你写到13页时就有25分的技术分了。
回复 使用道具 举报
//程序清单4-11 关键字  break   从1到20的整数依次加到sum中,直到sum大于或等于100            
class  TestBreak
{
        public static void main(String[] args)
        {
                int sum=0;
        int number=0;
                while (number<20)
                {
                        number++;
                        sum=sum+number;
                        if (sum>=100)
                            break;
                }
                System.out.println("循环次数是"+number);
                System.out.println("总数是"+sum);
        }
}
/*
循环次数是14
总数是105
*/
回复 使用道具 举报
不是吧, 这样也可以?
回复 使用道具 举报
//程序清单4-10 蒙特卡罗模拟 使用随机数和概率来分析问题
class MoterCarloSimulation //用蒙特卡罗来估算π
{
        public static void main(String[] args)
        {
                final int NUMBER_OF_TRIALS=10000000;
                int numberOfHits=0;
                for (int i=0;i<NUMBER_OF_TRIALS ;i++ )
                {
                        double x=Math.random()*2.0-1;
                        double y=Math.random()*2.0-1;
                        if (x*x+y*y<=1)
                        {
                                numberOfHits++;
                        }
                }
                double pi=4.0*numberOfHits/NUMBER_OF_TRIALS;
                System.out.println("π等于"+pi);
        }
}
/*
π等于3.1419248
*/
回复 使用道具 举报
//程序清单4-9 预测未来学费 假设某大学今年的学费是10000美金,而且以每年7%的速度增加。多少年之后学费会翻倍?
class  FutureTuition
{
        public static void main(String[] args)
        {
                double tuition=10000; //一年学费10000
                int year=1;
                while (tuition<20000)
                {
                        tuition=tuition*1.07;
                        year++;
                }
                System.out.println("学费涨到20000美元,要"+year+"年。");
        }
}
/*
学费涨到20000美元,要12年。
*/
回复 使用道具 举报
//程序清单4-8 求最大公约数 提示用户输入两个正整数,然后找到它们的最大公约数
import java.util.Scanner;
class  GreatestCommonDivisor
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);

                System.out.print("请输入第一个整数: ");
                int n1=input.nextInt();
                System.out.print("请输入第二个整数: ");
                int n2=input.nextInt();

                int gcd=1; //公约数
                int k=2;
                while (k<=n1 && k<=n2)
                {
                        if (n1%k==0 && n2%k==0)
                                gcd=k;
                                k++;
                        }
                        System.out.println(n1+"和"+n2+"的最大公约数是"+gcd);
                }
}
/*
请输入第一个整数: 125
请输入第二个整数: 2525
125和2525的最大公约数是25
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 继续加油,记得参与论坛互动

查看全部评分

回复 使用道具 举报
本帖最后由 电玩 于 2013-5-10 17:56 编辑

//程序清单4-7 浮点数的数值误差是不可避免的 最小化数值误差
class  TestSum //计算0.01到1.0的数列之和
{
        public static void main(String[] args)
        {
                float sum=0;
                for (float i=0.01f;i<=1.0f ;i=i+0.01f )//变量i从0.01开始,每次迭代增加0.01,当I超过1.0时循环终止。
                sum=sum+i;
                System.out.println("总和数是"+sum);
        }
}
//精确结果应该是50.50.
总和数是50.499985
回复 使用道具 举报
// 程序清单4-6 使用嵌套for循环打印一个乘法表
class  MultiplicationTable//乘法表
{
        public static void main(String[] args)
        {
                System.out.println("           九九乘法表");
        System.out.print("       ");
                for (int j=1;j<=9 ;j++ )
                     System.out.print("  "+j);
                System.out.println("\n---------------------------------------------  ");

                for (int i=1;i<=9 ;i++ )
                {
                         System.out.print(i+" | ");
                for (int j=1;j<=9 ;j++ )
                {
System.out.printf("%4d",i*j);
                }
System.out.println();
                }
        }
}
/*与毕老师不同的样子
           九九乘法表
         1  2  3  4  5  6  7  8  9
---------------------------------------------
1 |    1   2   3   4   5   6   7   8   9
2 |    2   4   6   8  10  12  14  16  18
3 |    3   6   9  12  15  18  21  24  27
4 |    4   8  12  16  20  24  28  32  36
5 |    5  10  15  20  25  30  35  40  45
6 |    6  12  18  24  30  36  42  48  54
7 |    7  14  21  28  35  42  49  56  63
8 |    8  16  24  32  40  48  56  64  72
9 |    9  18  27  36  45  54  63  72  81
*/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马