`

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教程 第四讲 Java的例外处理和IO流

    为了更好地管理和处理这些意外情况,Java提供了一套强大的例外处理机制。 #### 4.1.1 例外示例 ##### 示例1: 文件读取例外 考虑下面的代码示例: ```java import java.io.*; class ExceptionDemo1 { public ...

    Java的例外处理和IO流

    Java的异常是一种在程序运行时发生的问题,它中断了正常的代码执行流程。异常是通过异常对象来表示的,这些对象在遇到错误情况时被创建并抛出。Java提供了异常处理机制,让开发者能够优雅地处理错误,而不是让程序...

    java反射机制原理详解.docx

    在Java中,一切皆为对象,类也不例外。`java.lang.Class`类是反射的起点,它代表了Java运行时的类信息。当我们编写一个Java类并编译后,会生成对应的`.class`文件。Java虚拟机(JVM)的类加载器会加载这些`.class`文件...

    java超强笔记

    此外,多线程编程也是Java的一大亮点,笔记会介绍线程的创建与同步机制,如synchronized关键字和wait/notify机制。 文件I/O操作是任何编程语言都不可或缺的部分,Java也不例外。笔记会讲解如何在Java中读写文件,...

    Java清华教程.rar

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

    java慕课uooc答案

    Java 语言支持例外处理机制,可以处理运行时的错误和异常。Java 语言的例外处理机制可以通过 try-catch 语句来实现。 Java 语言的例外处理机制可以提高代码的可靠性和可维护性。 7. File 类与输入输出流 Java ...

    java编写的住宿管理系统

    此外,Java的异常处理机制和强大的库支持,如Spring框架,能够有效处理错误,提高系统的健壮性。 系统设计通常分为前端和后端两个部分。前端是用户与系统交互的界面,可能采用JavaFX或Swing进行开发,提供友好的...

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

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

    JAVA精品视频教程下载地址

    这些是编写任何程序的基础,Java也不例外。在视频教程中,这部分内容可能会通过实例演示,让学习者直观地了解如何编写和运行简单的Java程序。 接下来,会深入到面向对象编程(OOP)的概念,这是Java的核心特性。这...

    清华大学java教程

    3. **异常处理**:Java中的异常处理机制使得程序在遇到错误时能更优雅地进行恢复或提供反馈,这是编写健壮代码的重要部分。 4. **集合框架**:Java集合框架提供了丰富的接口和类,如ArrayList、LinkedList、HashMap...

    java jdk-8u51-macosx-x64.dmg.zip

    1. **Java版本**:8u51指的是Java 8的更新51(Update 51),这是一个重要的维护版本,修复了前一版本中的多个安全漏洞和性能问题,同时引入了一些新功能和改进。 2. **Java Development Kit (JDK)**:JDK是Java...

    JAVA清华教程 详细

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

    Java核心技术-基础知识(第8版中文版)core java

    接口提供了多继承的机制,一个类可以实现多个接口,从而获得多个接口提供的功能。这有助于实现松耦合的设计,提高代码的可维护性和可扩展性。 多线程是Java的一大特色,Java提供了丰富的API来支持并发编程。线程是...

    第八版java核心技术

    第八版也不例外,它不仅巩固了Java作为企业级应用开发首选语言的地位,还引入了许多与时俱进的新特性。 一、Java基础知识 1. **语法基础**:包括变量、数据类型、运算符、流程控制(如if语句、switch语句、for循环...

    java-coap,coap java库.zip

    Java-CoAP项目也不例外,通过其提供的示例,用户可以快速了解如何创建COAP客户端和服务器。 总的来说,Java-CoAP库是Java开发者实现COAP协议的理想工具,无论是在构建智能家居、智能城市还是工业物联网应用中,都能...

    java基础知识入门_java_world_入门_

    "程序是每个初学者接触新语言的第一步,Java也不例外。本文将深入探讨Java的基础知识,帮助初学者快速入门。 首先,Java是一种面向对象的语言,它的设计理念是“一次编写,到处运行”(Write Once, Run Anywhere,...

    Java版俄罗斯方块游戏源程序

    游戏逻辑是任何游戏项目的核心部分,Java版俄罗斯方块也不例外。游戏逻辑的实现涉及到方块的生成、旋转、下落、碰撞检测以及行消除等关键功能。通过使用二维数组来表示游戏板,开发者可以很直观地控制和更新每一个...

    java语言如何学习.pdf

    java语言学习方法总结 Java语言学习是一个复杂的过程,需要掌握多个...学习者需要注意静态方法和属性、接口、集合框架、例外捕捉机制、多线程机理、网络编程等方面的知识,并避免常见的误区,以便更好地掌握Java语言。

Global site tag (gtag.js) - Google Analytics