java 判断字符串首字母大写,非首字母小写代码,看看我的代码有没有问题?

publicclassTest2{publicbooleanisValiString2(Stringstr){if(str!=null&&!"".equals(str))... public class Test2
{

public boolean isValiString2(String str)
{
if(str !=null && !"".equals(str))
{
//首字母大写的判断
for(char i='A';i<='Z';i++)
{
//如果首字母大写且只有一个大写字母,就通过
if(str.substring(0).length()==1 && str.charAt(0)==i)
{
return true;
}
if(str.substring(0).length()>1 && str.charAt(0)==i)//如果首字母大写且length>1继续执行下面的循环
{
break;
}
}
//System.out.println(str.charAt(1));
for(int j=1;j<str.length();j++)
{
//System.out.println(str.charAt(j));
if(str.charAt(j)>='a' && str.charAt(j)<='z')
{
System.out.println(str.charAt(j));
if(j==str.length()-1)//当结束时,结果成立,就返回true
{
return true;
}else{
continue;//否则,继续

}
}else
{
//return false;
break;//只要上面的if不成立,就跳出循环
}
}

}
return false;
}

public static void main(String[] args)
{
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("B"));
}
}
展开
 我来答
乌微月2S
2013-03-25 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2906万
展开全部
可以实现目标,不够算法有问题吧。太长了。
package baidu;
public class Test2 {
public boolean isValiString2(String str) {
if (str != null && !"".equals(str)) {
if ((str.charAt(0) + "").compareTo("A") > 0
&& (str.charAt(0) + "").compareTo("Z") < 0) {
if (str.substring(1, str.length()).equals(
str.substring(1, str.length()).toLowerCase())) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("Dca1sa"));
}
}
允许出现数字。
追问
你这个特殊字符也行呀,比如*,\。好像都返回true。
追答
那要过滤吗?
过滤的话加一个正则。其他不变。
public boolean isValiString2(String str) {
Pattern p=Pattern.compile("[^a-z]");
if (str != null && !"".equals(str)) {
if ((str.charAt(0) + "").compareTo("A") > 0
&& (str.charAt(0) + "").compareTo("Z") < 0) {
if(p.matcher(str.substring(1, str.length())).find()){
return false;
}
if (str.substring(1, str.length()).equals(
str.substring(1, str.length()).toLowerCase())) {
return true;
}
}
}
return false;
}
偷偷地笑呗
2013-03-25 · TA获得超过163个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:88.3万
展开全部
逐个匹配不够效率。你明显已经知道可以通过i++去遍历A-Z,那么为什么不直接一次过写成
boolean result=('A'<new Integer(str.substring(0)))&&(new Integer(str.substring(0))>'Z')?true:false;
更多追问追答
追问
你这个str.substring(0),返回的可以使长度大于1的字符串吧,而且你这个算法不是太懂,我重来都没有用过new Integer();只用过常用的,比如:Integer.parseInt(str);能否在讲的清楚一点!
追答
new Integer(String)意思就是把一个类似'11'的数字字符串转为整形对象。。'A'这种纯字母字符都是对应一个整形值的。那么A-Z这些字母对应的整型值就是大于A小于Z。基于这个思想来进行判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-25
展开全部
你前面不是问了正则的么,用正则快多了
追问
正则的我是这样写的 String str = "^[A-Z]{1}[a-z]*$";
现在我想用纯java代码达到预期的效果,我觉得应该什么样的方法都应该尝试一遍,最后选择一个又安全,又容易理解的代码!只不过我觉得不管是什么方法都应该知道一些吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
605412254
2013-03-25
知道答主
回答量:20
采纳率:0%
帮助的人:11.5万
展开全部
有问题啊,而且太麻烦了。一定要这样写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式