华为2013年西安java机试题目:如何过滤掉数组中的非法字符。

时间:2022-01-29 07:12:10

这道题目为记忆版本:

题目2描述:

编写一个算法,过滤掉数组中的非法字符,最终只剩下正式字符。

示例:输入数组:“!¥@&HuaWei*&%123”

调用函数后的输出结果,数组:“HuaWei123”。

函数声明:

public static void getFormatString(String s)

代码实现如下:

 import java.util.ArrayList;

 public class HuaWeiTest {

     public static void main(String[] args){
String str="!&@$HuaWei*&%123";
HuaWeiTest test=new HuaWeiTest();
test.getFormatString(str);
System.out.println("过滤后的字符串是:"+test.getFormatString(str));
}
public static String getFormatString(String s){
//ArrayList<char> list=new ArrayList<String>();
//把String类型的数组转换成char类型的数组,方便比较字符值的大小。
String ret="";
char[] ch=s.toCharArray(); //把字符型变量转换成字符串。
for(int i=0;i<ch.length;i++){
if(('a'<=ch[i]&&ch[i]<='z')||('A'<=ch[i]&&ch[i]<='Z')||('0'<=ch[i]&&ch[i]<'9'))
ret+=ch[i];
}
return ret; }
}

TT要学的就是:

(1)String类型的变量要转换成char类型的,不然是没法比较ASCII码值。在此,我专门查了一下,为什么要把String类型的变量转换成char类型的?

记住:char[] ch=s.toCharArray();把String类型的变量转变成char类型的变量。

Ans:

(2)还有就是不能直接'a'<=ch[i]<='z',而要分开写:'a'<=ch[i]&&ch[i]<='z'? 因为'<='是二元运算符,这是语法。。