`

Java例外机制的问题

 
阅读更多

1.你知道怎么判断一个字符串是不是整数?

有三种方法解决以上问题

1.使用Character.isDigit(char)判断

String str = "123sad" ;

if(!"".equals(str)){ //字符串不为空

 char num[] = str.toCharArray();//把字符串转换为字符数组

 StringBuffer a = new StringBuffer();//使用StringBuffer类,把非数字放到a中

 StringBuffer b = new StringBuffer();//把数字放到b中

 for(int i=0;i<num.length;i++)

{

 //判断输入的数字是否为数字还是字符

 if(Character.isDigit(num[i])){

//调用Character.isDigit(char)方法判断是否是数字,是返回True,否则False

b.append(num[i]) ;//如果是数字,就把它赋给b.

}else {

  a.append(num[i]) ;//如果是字符,就把它赋给a.

}

}

}

 

 

2.使用类型转换判断

try{

String str ="12312sadfdf" ;

int num = Integer.valueOf(str);//把字符串强制转换为数字

return  true ;

}catch(Exception e)

{

 return false ;//如果抛出异常

}

 

 

3.用正则表达式判断

 String str = "" ;

 boolean isNum = str.matches("[0-9]+") ;

//表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7")

 

ps:上述方法只能判断是否是正整数

 

 

 

2.你知道怎么判断一个字符串是不是负整数?

看一个题,就会明白:Java例外机制的问题

 

总时间限制:
1000ms
内存限制:
65536kB
描述
现有多组输入数据,每组数据占两行。
如果第一行是一个整数(假设值为n),则创建一个大小为n的整数数组。
其第二行数据是个整数(假设值为index),输出数组中下标为index的数值。
如果第一行不是一个整数,则把第一行数据整个作为一个字符串;
其第二行数据也是整数(假设值为index),输出字符串中下标为index处的字符。
请通过Java的Exception机制去判断各种例外情况,
在例外发生时(如n为负数,index越界,第一行字符串不是整数),
输出相应例外类的类名。对应每组数据,有一行输出。
输入
输入为多行,每两行数据为一组。
对每组数据,第一行可能是一个整数,也可能是一个字符串,第二行数据一定是一个整数。整数的取值范围任意
输出
输出也为多行,对应一组数据有一行输出。
或者输出正确的结果,或者输出被抛出的例外的类名。
样例输入
123
256
Hello, how are you?
65
-1
45
23
21
Haha, you're wrong!
3
样例输出
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
NegativeArraySizeException
0
h//其实这个是a,不是h,希望大家不会犯错
解决方案一: Java
import java.util.Scanner;

public class Main{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
   new Main().test() ;
	}
    public void test()
    {
    	Scanner sc = new Scanner(System.in) ;
    	String str;
    	int index;
    	while(sc.hasNext()){
    		str = sc.nextLine() ;
       		index = sc.nextInt()  ; 
       		boolean isNum =  change(str) ;
    	 if(isNum)
    	{
    		int n = Integer.parseInt(str) ;
    		if(n<0){
    		System.out.println("NegativeArraySizeException") ;
    		}else{
    	    int h[] = new int[n] ;
       		if(index<0||index>h.length-1)
    		{
    			System.out.println("ArrayIndexOutOfBoundsException") ;	
    		}else
    		{
    			System.out.println(h[index]) ;
    		} 
       		}
    	}else
    	{   
       		String n = str ;
    		if(index<0||index>n.length()-1)
    		{
    			System.out.println("StringIndexOutOfBoundsException") ;
    		}else
    		{
    			System.out.println(n.charAt(index)) ;
    		}
    	}
    	 if(sc.hasNext())
       	  {sc.nextLine();}
    	 else{
    		 break ;
    	 }
        }
    	
    }
/**
*判断字符串是否是整数
*/
    public boolean change(String str)
    {   int k=0;
    if(str.equals("")) return false ;
    	 char num[] = str.toCharArray();//把字符串转换为字符数组
    	   for (int i = 0; i < num.length; i++) {
          	// 判断输入的数字是否为数字还是字符
    		   if((i==0&&num[i]=='0'&&num.length>1)||(num[0]=='-'&&num[1]=='0'))
    		   {	    
    	    	    return false ;
    	   }else if (Character.isDigit(num[i])) {
    	        k++ ;
    	    }
    	    if(i==0&&num[i]=='-'&&num.length>1)
    	    {
    	    	k++ ;
    	    }
    	   }    
        if(k==num.length) {return true ;}
        else {return false;}
      }
}
解决方案二:   Java 
  
package dsa;

import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner cinScanner = new Scanner(System.in);
		PrintWriter coutPrintWriter = new PrintWriter(System.out);
		
		while(cinScanner.hasNext()) {
			String string = cinScanner.nextLine();
			String string1 = cinScanner.nextLine();
			try {
				int n = Integer.parseInt(string);
				try {
					int a[] = new int[n];
					try {
						int m = Integer.parseInt(string1);
						coutPrintWriter.println(a[m]);
					} catch (Exception ex) {
						coutPrintWriter.println(ex.getClass().getSimpleName());
					}
				} catch (Exception e) {
					coutPrintWriter.println(e.getClass().getSimpleName());
				}
			} catch (Exception e) {
				try {
					int m = Integer.parseInt(string1);
					coutPrintWriter.println(string.charAt(m));
				} catch (Exception ex) {
					coutPrintWriter.println(ex.getClass().getSimpleName());
				}
			}
		}
		
		cinScanner.close();
		coutPrintWriter.close();
	}
}
 

 
 
分享到:
评论

相关推荐

    java异常机制总结

    关键字:throw throw是一种控制程序...很有意思,throws只是告诉编译器--方法可能产生的异常问题,然后把问题处理抛给try和catch。他们一个负责发现异常关系,一个负责异常捕获。很辛苦的一对难兄难弟哦,:)

    Java清华教程.rar

    Java程序的例外处理机制和方法;  ■ Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;  ■ Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面...

    JAVA程序语言(SL-275)教程

    如何使用JAVA来创建图形用户界面(GUI),事件处理机制,例外处理,通过设计与开发各种JAVA程序来获得实际的编程经验。您也将学到文件输入/输出/(I/O)。多线程和网络的知识(本课程用来代替SL-230/SL-270和SL-270/...

    清华大学java教程

    Java程序的例外处理机制和方法;  ■ Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;  ■ Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面...

    JAVA清华教程 详细

    Java程序的例外处理机制和方法;  ■ Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;  ■ Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面...

    [清华大学]JAVA教程

    Java程序的例外处理机制和方法;  ■ Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;  ■ Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面...

    java基础学习笔记之java oop高级java异常处理机制、集合、文件操作、序列化与反序列化、字符串处理(三)

    JAVA异常处理机制 一、什么异常(Exception) 1.生活中异常:不正常事件(意外) 2.程序异常:异常是指在程序的运行过程中所发生的不 正常的事件(例外,错误),它会中断正在运行的程序。 3.什么是异常处理:java编程语言使用...

    Java中变量内存分配机制

     在任何编程语言中,无论是基本类型还是引用类型,不论其作用域如何,都必须为其分配一定的内存空间,Java 语言也不例外,Java 的数据类型可以分为两种:基本类型(变量持有数据本身的值)和引用类型(是某个对象...

    快逸报表软件-免费、快速开发WEB报表的JAVA报表工具

    •直接使用web应用已有的用户角色管理机制,不存在两套管理机制无法兼容的问题,提供统一的登录界面,最终用户不需要登录两次。 总结:润乾采取的集成方案新颖独到,其报表工具完全解决了程序员的集成烦恼,非常...

    学习Java,你需要知道这些——Java异常

    文章目录异常处理的概念异常的基本概念Java异常处理机制的优点错误的分类异常的分类预定义的一些常见异常异常的处理抛出异常捕获异常的语法生成异常对象声明自己的异常类 异常处理的概念 在程序在运行的时候可能会...

    基于REasyHttp:xJava2+Retrofit2+RxCache的网络请求框架

    目前网上对Rxjava2+Retrofit2的封装真是太多了,但是大体思路都是一样的,而且好多代码都具有相似性,这套其实也不例外,大家可选择性使用。 首先我们先不说封装思路,先说说这套框架都都具有哪些功能及如何使用; ...

    course-java-2:极客大学家庭作业Java 2级

    异常处理的概念,与传统错误处理机制的比较,try-catch-finally块,异常类型,Java中的标准异常及其作用,从方法中抛出异常。 第3课。收藏 Java容器的类型:列表,地图,集合。 基本实现和使用技术,遍历集合的元素...

    java笔试题算法-distributed-saga:分布式saga模式的实现由用于api、执行和序列化的单独java库组成

    这些库可用于构建具有明确定义的容错和恢复机制的分布式系统。 saga-samples 模块下的 polyglot-persistence 示例应用程序演示了所有分布式 saga 库的充分利用,是一个很好的起点。 该项目的一个目标是分布式 saga ...

    java-servlet-api.doc

    Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...

    SCJP试题详析.pdf

    循序渐进从JAVA基本概念、核心内容、试题分析、小结和习题等多个环节来组织内容,内容主要包括JAVA语言语法、使用JAVA来创建图形和用户接口、例外处理、垃圾搜索、面向对象、文件输入、输出、事件处理机制、多线程...

    SCJP+陷阱大全.doc

    掌握如何使用标准Java Development kit V1.5 (JDK)...如何使用Java来创建图形用户接口(GUI),事件处理机制,例外处理,通过开发各种Java程序来获得实际的编程经验;您也将学到文件输入/输出(I/O);多线程和网络的知识。

    jsp动态网站开发与实例(第3版)课件

    程序出错的情形相当普遍...例外处理是Java处理程序错误的一套标准机制 ,JSP延用这套机 制,为运行网页过程中所产生的错误,提供相关的处理方法 。 JSP可能产生的错误可以大致分为两类:编译期的错误和运行期的例外。

    zadlab10-RomanMusijowski:GitHub Classroom创建的zadlab10-RomanMusijowski

    Java中有一个例外,它是一个对象,它描述程序代码中出现的异常(错误)情况。 当给定方法中发生错误时,将在该方法中引发描述该错误的异常。 该方法既可以捕获并处理异常本身,也可以将其传递。 最后,错误被捕获并...

    zadlab10-michalwiciak:GitHub Classroom创建的zadlab10-michalwiciak

    Java中有一个例外,它是一个对象,它描述程序代码中出现的异常(错误)情况。 当给定方法中发生错误时,将在该方法中引发描述该错误的异常。 该方法既可以捕获并处理异常本身,也可以将其传递。 最后,错误被捕获并...

Global site tag (gtag.js) - Google Analytics