(特急)《Java程序设计》理论题库—判断题(要准确答案)

(特急)《Java程序设计》理论题库—判断题(要准确答案),第1张

异常抛出,就是将异常抛给异常处理器,暂时不去处理它。

摘要:《Java程序员面试指南》第7章异常处理及内存管理,本章讲述的是要想成功地成为一名合格的Java程序员,掌握好异常处理机制是编写大型程序必不可少的基本功。本节为大家介绍异常的处理方式之三:throw。

标签:throw Java 程序员 Java程序员面试指南

Oracle帮您准确洞察各个物流环节

74 异常的处理方式之三:throw(1)

异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。本节主要讲解用throw抛出异常的方式,以及如何由try-catch来接收所抛出的异常。

当一个方法发生异常时可以通过throw关键字来抛出异常,把异常抛给它上一级的调用者,抛出的可以是异常引用,也可以是异常对象,它的语法格式如下:

throw 异常对象名; 或者

throw new 异常类名(); 一条throw语句一旦被执行,程序立即转入相应的异常处理程序段,它后面的语句就不再执行了(这一点类似于return语句),而且它所在的方法也不再返回有意义的值。在一个方法中,throw语句可以有多条,但每一次最多只能执行其中的一条。在一般情况下,throw语句都会写在判断语句块中,以避免每次都执行该语句。

代码剖析下面来看一个例子,也许从中你会明白点什么。具体代码如下:

public class catchThows { static int x; public static void main(String argv[]) { double a = Mathrandom() 10; if (x > 0) Systemoutprintln(a / x); else throw new Exception(); // 抛出异常 } public void setX(int x) { thisx = x; } } 运行结果如图71所示。

(大图)图71 运行结果

从上面的运行结果中可以看出,一个方法中如果使用throw来抛出异常,要么自己捕获它,要么声明抛出了一个异常。要声明抛出了异常,需要用throws关键字在方法的头部声明。如果我们将上面的代码修改成下面的代码,那么结果又会怎样呢?

public class catchThows_1 { static int x; public static void main(String argv[]) { new catchThows()setX(0); double a = Mathrandom() 10; if (x > 0) Systemoutprintln(a / x); else try { throw new Exception();// 抛出异常 } catch (Exception e) { Systemoutprintln("出现异常的原因是:"+egetMessage()); } } public void setX(int x) { thisx = x; } } 运行结果如下:

出现异常的原因是:null 还有一种抛出异常的方法是让被调用的方法表示它将不处理异常,该异常将被抛出到它的调用方法中。这点是和throws声明异常很相似的,但它们的位置是完全不同的。具体代码如下:

public class catchThows_2 { void findThows() { try { //抛出方法 throw new ArithmeticException(); } catch(ArithmeticException ae) { throw ae; } } public static void main(String args[]) { catchThows ct=new catchThows(); //对方法进行异常处理 try { ctfindThows(); } catch(ArithmeticException ae) { Systemoutprintln("出现异常的原因是:"+ae); } } } 运行结果如下:

出现异常的原因是:javalangArithmeticException

责任编辑:云霞 TEL:(010)68476606

回书目 上一节 下一节

上一篇: 73 异常的处理方式之二:throws(2) 下一篇: 74 异常的处理方式之三:throw(2)

相关文章

·75 内存的管理(2)

·74 异常的处理方式之三:throw(2)

·173 Java高级编程试题(1)

·171 Java基础编程试题(6)

·171 Java基础编程试题(5)

频道热门

·自己动手写搜索引擎

·112 编写代码(15分钟)

·111 准备工作环境(10分钟)

·软件调试的艺术

·WCF编程(第2版)

这个问题看起来不是很简单,需要设计一个算法:

先讲数学:

设:

an=a+(n-1)d (这里d=1)

a1=a

an=a+n-1

sn=(a1+an)n/2=(2a-1+n)/2

再回到这个编程上来:

我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增数列使得和为sn。

这里我们可以用循环来判定,给定一个n,sn已知,就可以求出a,如果a为正整数那么就可以找到等差数列的首项,加上n给定,d=1,那么就可以写出这个和式子。

代码如下:

#include<stdioh>

void main()

{

int input,i,n,flag;

float a;//等差数列的首项不一定为整数

flag=0;

printf("输入判断的整数:\n");

scanf("%d",&input);

for(n=2;n<=input;n++)

{

a=(2input+n-nn)/(20n);//求的首项

if(int(a)==a&&a>0)//如果为整整数,则满足要求

{

printf("%d=%d",input,int(a));//输出的序列为整数,a实质是整数,那么强制转化类型不影响结果

for(i=1;i<=n-1;i++)

printf("+%d",int(a+i));//等差数列的其他项也为整数,a+i实质是整数,装换类型

printf("\n");

flag++;//flag记录满足要求的数列数

}

}

if(flag==0)   //flag初始为0,通过上面的循环,如果有满足的在则不为0,为0则说明不能写成等差数列

printf("%d不能被表示成n连续正整数之和\n",input);

}

第六题:

#include <stdioh>

#include <stringh>

int main()

{

char str[100];

gets(str);

int t=strlen(str);

for(int i=0;i<=t/2;i++)

if(str[i]!=str[t-i-1])

{

printf("所输入的字符串不是回文字符串\n");

return 0;

}

printf("所输入的字符串是回文字符串\n");

}

第五题:

#include <stdioh>

#include <stringh>

int main()

{

int a[3][4];

int b[4][3];

int i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

{

scanf("%d",&a[i][j]);

b[j][i]=a[i][j];

}

printf("转置后的数组为:\n");

for(i=0;i<4;i++)

{

for(j=0;j<3;j++)

printf("%3d",b[i][j]);

printf("\n");

}

}

第四题:

#include <stdioh>

#include <stringh>

int main()

{

int a[15][15]={1};

int n,i,j;

scanf("%d",&n);

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

a[i][j]=a[i-1][j]+a[i-1][j-1];

for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}

第三题:

#include <stdioh>

#include <stringh>

int main()

{

 int a[10]={-12,5,25,33,45,56,76,96,110,115};

 int n;

 scanf("%d",&n);

 int k=4;

 for (int i=0;i<10;i++)

 {

if(a[k]==n)

{

printf("%d是该数组的第 %d个数\n",n,k+1);

return 0;

}

else if(a[k]>n)

k=k/2;

else

k=(10+k)/2;

 }

 printf("数组中无%d这个数\n",n);

}

第二题:

#include <stdioh>

int main()

{

int a[8];

for(int i=0;i<8;i++)

scanf("%d",&a[i]);

int max,temp;

for(i=0;i<7;i++)

{

max=i;

for(int j=i+1;j<8;j++)

if(a[max]<a[j])

max=j;

temp=a[i],a[i]=a[max];a[max]=temp;

}

printf("排序后的数为:\n");

for(i=0;i<8;i++)

printf("%3d",a[i]);

printf("\n");

}

第一题:

#include <stdioh>

int main()

{

int a[10];

float average=0,sum=0;

for(int i=0;i<10;i++)

{

scanf("%d",&a[i]);

sum=sum+a[i];

}

average=sum/10;

int max,temp;

for(i=0;i<9;i++)

{

max=i;

for(int j=i+1;j<10;j++)

if(a[max]<a[j])

max=j;

temp=a[i],a[i]=a[max];a[max]=temp;

}

printf("最高分是:%d\t最低分是%d\n",a[9],a[0]);

printf("平均分是%g\n",average);

printf("高于平均分的分数为:\n");

for(i=0;i<10;i++)

if(a[i]>average)

printf("%4d",a[i]);

printf("\n");

}

就当做是我复习吧  楼主还有疑问吗?

以上就是关于(特急)《Java程序设计》理论题库—判断题(要准确答案)全部的内容,包括:(特急)《Java程序设计》理论题库—判断题(要准确答案)、关于编程大赛的一道题目,一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,找出这样的数并输出!、关于C语言程序设计的几道题。学霸们帮一下忙吧。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9268720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存