黑马程序员技术交流社区
标题:
关于键盘录入System.in的问题
[打印本页]
作者:
够了没有
时间:
2013-11-22 10:31
标题:
关于键盘录入System.in的问题
对于老师讲的这个键盘录入的程序,我把'\r'和'\n'变成字符串后为什么就不行?
import java.io.*;
class ReadIn {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
//以下代码块将做改动
while(true) {
int ch = in.read();
if (ch=='\r')
continue;
if(ch=='\n') {
String s = sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}
-----------------------------------------------------------------------------------------------------------------------------
import java.io.*;
class ReadIn {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
//以下代码块是做改动后的
char[] c = {'\r'};
String str = new String(c);
char[] c1 = {'\n'};
String str1 = new String(c1);
while(true) {
int ch = in.read();
if (str.equals(ch))
continue;
if(str1.equals(ch)) {
String s = sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}
作者:
习嘻嘻
时间:
2013-11-22 11:02
这是equals()方法的源码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1
!= v2
)
return false;
i++;
}
return true;
}
}
return false;
}
read()的是char类型的,
if (anObject instanceof String)
比较不
是
String类型
,他就不会继续判断了直接跳到最后的
return false;
至于为什么他们两个为什么可以使用equals()而不报错,我认为应该是char对应的int会自动装箱变为Integer类型。还请各位大侠说说。
作者:
che201311
时间:
2013-11-22 11:48
看看源码就知道了ublic boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1 != v2)
return false;
i++;
}
return true;
}
}
return false;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2