黑马程序员技术交流社区
标题:
求该错误
[打印本页]
作者:
pthuakai
时间:
2013-5-4 09:38
标题:
求该错误
package Test;
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="015455645";
if(s.charAt(0)==0)
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别
System.out.println("S:"+s);//想让这里打印一次该怎么办?
}
}
else
{
System.out.println("error length");
}
}
}
作者:
吴传淦
时间:
2013-5-4 09:57
修改了下不知道满意不。
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="15455645";
if(s.charAt(0)==
'0'
)
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别
System.out.print
(c[x])
;//想让这里打印一次该怎么办?
}
}
else
{
System.out.println("error length");
}
}
}
作者:
郑雪
时间:
2013-5-4 09:57
if(c[x]>'0'&&c[x]<'9')这句的意思是:如过字符c[x]是在0到9之间的数字,
而c[x]>0&&c[x]<9意思是:字符c[x]在ASCII码表中所对应的数值,而这个数字并不是在0到9之间的数字,应该是48到57之间。
作者:
hou604720966
时间:
2013-5-4 09:59
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别 前面的判断是‘0’到‘9’之间的字符 而注释掉的是判断c【x】的Ascii码值
//想让这里打印一次该怎么办?
在这个if(c[x]>'0'&&c[x]<'9') 判断中,你可以在上面定义一个boolean变量,当做一个开关来判断,比如:
char[] c=s.toCharArray();
boolean judge = false;
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9' && ! judge){//这里和有什么区别
System.out.println("S:"+s);//想让这里打印一次该怎么办?
judge = true;
}
}
作者:
胡帅冰
时间:
2013-5-4 10:26
/**
*
*/
package exercise;
/**
* @author bin
*
*/
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="015455645";
if(s.charAt(0)=='0')
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别
//区别大了。c[x]>'0'&&c[x]<'9'是进行字符的比较,c[x]中的字符必须是'0'到'9'的字符才行的。
// c[x]>0&&c[x]<9 是将c[x]中的字符的ASCⅡ与数字 0 9 比较。
{
System.out.println("S:"+c[x]);//想让这里打印一次该怎么办?
}
}
}
else
{
System.out.println("error length");
}
}
}
复制代码
作者:
xuluheng718
时间:
2013-5-4 15:58
package Test;
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="015455645";
if(s.charAt(0)==0)
/*
首先这里一个错误,你的初衷应该是想打印从0开始,char类型和int类型比较,char会隐式转换成int '0'转换成int是48,而它的转换是根据ASCII码表 转换的。字符'0'在ASCII中十进制的值为48,所以这句改成if(s.charAt(0)=='0')比较合适*/
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别
/*
这里其实就是上面的问题,这属于完全不同类型的数值比较,系统会自动把低位的数值转换成高位的数值然后进行比较,c[x] >'0'这是两个字符进行比较而c[x]<0,是两个int类型的数值在比较*/
System.out.println("S:"+s);//想让这里打印一次该怎么办?
/*而这里,你打印的是你上面的字符串,可能你想打印的是经过你筛选的字符,那么你可以把其中的s改成c[x]*/
}
}
//感觉你写这个程序严重脱离了自己的思路
else
{
System.out.println("error length");
}
}
}
作者:
花开花落总相似
时间:
2013-5-4 20:01
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="015455645";
if(s.charAt(0)==0)
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别 至于这里 一个是0,9的比较 另个一个是整数类型的比较 你说区别呢
{
System.out.print(c[x]);/*想让这里打印一次该怎么办?前面的换行给去掉 里面的改成 c[x] 但是这个也是打印 好多次的 只不过看起来 一串
只不过我觉得你的原意应该是打印出来满足条件的 字符 所以 我觉得还是把满足条件的都打出来的好。
//break; 还有这个 虽然这个是打印一次的 但是这个就直接跳出循环了 有改你的初衷 */
}
}
}
else
{
System.out.println("error length");
}
}
}
呵呵 改的不好还请见谅
作者:
黄玉昆
时间:
2013-5-4 22:42
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2