java 结构化编程_四、Java结构化编程综合

本节通过程序设计实例,来进一步掌握Java结构化编程方法。

例12:输入一月份,求该月的天数。

分析:不同的月份有不同的天数,这需要判断后才能确定。把月份归为三类,30天的月份有4、6、9、11月份,28或29天(由年份再确定)的月份是2月份,其余皆为31天。这是一个多分支判断的问题,可用if或switch语句解决,根据月份判断天数部分用switch语句代码更简捷。

[Monthdays.java]

import java.util.Scanner;

class Monthdays{

public static void main(String[] args){

int month,days;

Scanner sc = new Scanner(System.in);

System.out.print("Month? ");

month = sc.nextInt();

if(month<1 || month>12){//若输入数据非月份数

System.out.println("error data");

System.exit(0);//退出运行

}

switch(month){

case 4: case 6: case 9: case 11: days = 30;break;

case 2://2月份需要输入年份进一步判断

System.out.print("Year? ");

int year = sc.nextInt();

if(year%400==0 || year%4==0 && year%100!=0)

days = 29;

else days = 28;

break;

default: days = 31;

}

System.out.println("days: "+days);

}

}

程序运行中途要强制退出,可以用“System.exit(0);”语句。本例中若输入的年份数据是不合理的数据,程序输出error data后,便退出结束运行。

例13:输入一个自然数,判断该数是否为素数。

分析:先确认什么样的数为素数。根据数学定义知,一个自然数除了1和本身之外没有其他的因子,该数便为素数。2专门规定为素数,且是最小的素数。对于自然数n,我们只要用2到n-1去测试,如果它们中没有一个是n的因子,n就为素数,否则n不是素数。

[PrimeTest.java]

import java.util.Scanner;

class PrimeTest{

public static void main(String[] args){

Scanner sc = new Scanner(System.in);

System.out.print("number? ");

int n = sc.nextInt();//n为被测数

int i; //i为1和本身外可能的因子

for(i=2;i

if(n%i == 0)break; //i是n的因子,n非素数

if(i == n) //所有可能的因子全非n的因子

System.out.println( n + " is a prime number." );

else

System.out.println(n + " is not a prime number");

}

}

例14:求所有三位素数。

分析:本题是上题的拓展。不是判断某一个数,而是判断所有三位数。这就需要用一个循环变量遍历三位数,因为所有的三位偶数都非素数,所以可直接遍历三位奇数。对于确定的三位数判断其是否为素数的方法同上。

[PrimeNumbers.java]

class PrimeNumbers{

public static void main(String[] args){

int i,n;

for( n = 101; n<1000; n+=2 ){//n遍历所有三位奇数

for( i=2; i

if( n%i == 0 )break;

if( i==n )System.out.print( n + "\t");

}

}

}

程序运行结果:

101103107109113127131137139149

151157163167173179181191193197

983991997

例15:输出如下菲波那契数列的前20项,并求其和。

1,1,2,3,5,8,13……

分析:菲波那契数列的前两项均为1,以后的每一项都是前两项之和。这是一个重复求和处理的问题,可用循环解决。循环次数是所要求的项数18。对所有项求和的问题可以设置一个累加器变量sum,初值为前两项之和,后在循环中每求得一新项,即将该项加进sum。

[Fei.java]

class Fei{

public static void main(String[] args){

int a,b,c,sum;

a = b = 1; //a,b为前两项,均为1

sum = a + b;//累加器变量,设初值

System.out.print( a + "\t" + b );

for( int i=1; i<=18; i++ ){

c=a+b;//生成的新项置放在变量c中

System.out.print("\t" + c);

sum += c;

a = b; //前两项后移一个数

b = c;

}

System.out.println("\tsum=" + sum);

}

}

程序运行结果:

11235813213455

891442333776109871597258441816765

sum=17710

本讲介绍了Java语言的结构化编程,在main方法中的代码段总是由三种基本结构组成:顺序结构、分支结构和循环结构。分支结构通常用if或switch语句实现,循环结构常用while、do-while或for语句实现。在循环结构中可以继承包含循环,这即是循环嵌套,也称为多重循环,我们可用多重循环解决比较复杂的问题。break语句可以安排在switch和三种循环语句中,它总是会终止当前的语句。continue语句可以放在循环语句中,它只是结束当前循环,而并不会终止循环。

至此,我们已初入Java之门,可以解决一些基本的数据处理问题了。

思考与练习

1. 求150内的奇数之和。

2. 输入一个自然数,求N!。

3. 用循环嵌套的方法输出如下图案:

(1)(2)

** * * * *

* ** * * *

* * ** * *

* * * ** *

* * * * **

(3)(4)

* * * * * * * * **

* * * * * * * * * *

* * * * ** * * * *

* * ** * * * * * *

** * * * * * * * *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值