3.101.将某网页评论提交给后台的字符串str中,如果包含有”\”,”<”,”>”,”=”四种符号的,过滤掉以后防止系统被执行恶意代码.写出你的Java代码
String str = "<<楼主说的非常对!\\和谐社会,科学上网>=."
参考答案:
public class Q101{
//过滤特殊字符
public static String StringFilter(String str) throws PatternSyntaxexception{
String regEx = "{=\\\\<>}";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
public static void main(String[] args){
String str = "<<楼主说的非常对!\\和谐社会,科学上网>=.";
System.out.println(str);
System.out.println(StringFilter(str));
}
}
3.102.现在给你一个新一代身份证号,默认为18位号码;如果该号码是15的话,请在第6位后面加上”19”,并且在末尾加上”X”;如果是18位,则不变
参考答案:
import java.util.Scanner;
public class Q102{
public static String change18(String cardId){
StringBuilder sb = new StringBuilder(cardId);
return sb.insert(6,"19").append("X").toString();
}
public static void main(String[] args){
System.out.println("请输入身份证号:");
Scanner scan = new Scanner(System.in);
String idCard = scan.next();
if(idCard.length() == 15){
idCard = change18(idCard);
}
System.out.println(idCard);
}
}
3.103.编写一个方法
给你一个字符串数组String s[] = {“A”,”B”,”C”,”D”,”E”,”F”},请随机生成一个数,比如:生成的数为2,则输出数组中随机两个元素的组合B,E或者A,C等;生成数为3,就为三个随机元素组合
参考答案:
public class Q103{
public List<String> group(int count,String[] str){
List<String> list = new ArrayList<String>();
for(int i = 0; i < str.length; i++){
String result = "";
result = str[i];
for(int j = i + 1; j < str.length; j++){
for(int h = 0; h < count - 1; h++){
if((j + h) < str.length){
result += str[j + h];
}
}
if(result.length() == count){
list.add(result);
}
result = str[i];
}
}
return list;
}
public static void main(String[] args){
String[] s = {"A","B","C","D","E","F"};
List<String> list = new Q103().group(3,s);
System.out.println(list);
}
}
3.104.请编写一个对于Java例外处理的完整的程序
参考答案:
本案例以自定义异常为例说明Java异常处理的完整过程.
首先新建自定义异常类NotNumberException,该异常可以在某个字符串不为数字组成的情况下抛出,代码如下;
public class NotNumberException extends Exception{
public NotNumberException(){
super();
}
public NotNumberException(String message, Throwable cause){
super(message, cause);
}
public NotNumberException(String message){
super(message);
}
public NotNumberException(Throwable cause){
super(cause);
}
}
然后,新建类ExceptionDemo,在类中添加parseInt方法,该方法用于将字符串转换为整数类型,当该字符串不是由数字组成时,使用throw抛出上面自定义的异常NotNumberException,并且在方法声明除,使用throws声明抛出该异常,然后在main方法中调用parseInt方法时,使用try-catch处理异常.代码如下:
public class ExceptionDemo{
public static void main(String[] args){
//如果调用了有异常抛出的方法,就必须处理异常.
try{
int i = parseInt("32145");
System.out.println(i);
} catch (NotNumberException e){//异常的处理
System.out.println(e);
}
}
/** 将字符串转换为整数值 */
public static int parseInt(String str) throws NotNumberException{//声明异常的抛出
int sum = 0;
for(int i = 0; i < str.length(); i++){
char c = str.charAt(i);
if(c < '0' || c > '9'){
throw new NotNumberException("不是数字呀!");//异常抛出点
}
sum = sum * 10 + (c - '0');
}
return sum;
}
}
3.105.编写自定义异常,处理输入字符串abc抛出异常,其他不抛出
参考答案:
定义异常MyException,当输入字符串为abc时,抛出该异常.代码如下:
public class MyException extends Exception{
private String errorMsg;
public MyException(String errorMsg){
this.errorMsg = errorMsg;
}
public String getErrorMsg(){
return errorMsg;
}
public void setErrorMsg(String errorMsg){
this.errorMsg = errorMsg;
}
@Override
public String toString(){
return errorMsg;
}
}
定义TestException类,在main方法中接收控制台输入,当输入字符串为abc时,抛出异常MyException.代码如下:
import java.util.scanner;
public class TestException{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
if(str.equals("abc")){
throw new MyException("输入的字符串不正确!");
}
}
}