java输出,为什么不输出字符,而是输出字符的ASCII码啊,求大神指点迷津

YDZ785089334 2013-10-20 10:49:49
import java.util.Scanner;
public class Ja9_7 {
/** * @param args */
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.print("Enter a string : ");
String s = input.next();
for(int i = 0;i < s.length();i++){
System.out.print(s.charAt(i) + \\/);//这里输出字符,这是我检验用的实验语句 System.out.println(Character.isLetter(s.charAt(i)) ? getNumber(Character.toUpperCase(s.charAt(i))) : s.charAt(i)(但是这里输出的是ASCII码,为什么啊,没有隐式的转换啊));
} }
public static int getNumber(char uppercaseLetter){
if(uppercaseLetter == 'A' || uppercaseLetter == 'B' ||uppercaseLetter == 'C' ) return 2;
if(uppercaseLetter == 'D' || uppercaseLetter == 'E' ||uppercaseLetter == 'F' ) return 3;
if(uppercaseLetter == 'G' || uppercaseLetter == 'H' ||uppercaseLetter == 'I' ) return 4;
if(uppercaseLetter == 'J' || uppercaseLetter == 'K' ||uppercaseLetter == 'L' ) return 5;
if(uppercaseLetter == 'M' || uppercaseLetter == 'N' ||uppercaseLetter == 'O' ) return 6;
if(uppercaseLetter == 'P' || uppercaseLetter == 'Q' ||uppercaseLetter == 'R' ||uppercaseLetter == 'S')
return 7;
if(uppercaseLetter == 'T' || uppercaseLetter == 'U' ||uppercaseLetter == 'V' ) return 8;
if(uppercaseLetter == 'W' || uppercaseLetter == 'X' ||uppercaseLetter == 'Y' ||uppercaseLetter == 'Z')
return 9;
return 0; }}


...全文
546 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小菜寻路 2013-10-21
  • 打赏
  • 举报
回复
经过试验,应该是这个三元运算符的问题。他会自动类型转换,使':'两边的类型统一。
失落夏天 2013-10-21
  • 打赏
  • 举报
回复
引用 1 楼 AA5279AA 的回复:
getNumber(Character.toUpperCase(s.charAt(i))) 返回的是assic码吧? 至少返回的是int 具体规则我忘了,好像就是就是以第一个为标准的。。。
今天早上特意试了一下,我确实是记错了。。。 做了一个小例子,

public static void main(String args[]) {
		char c1='a';
		int c2=98;
		boolean flag=Math.random()>0.5?true:false;
		System.out.println(flag);
		System.out.println(flag?c1:c2);
		System.out.println(flag?c2:c1);
	}
显示结果: false 98 97 结果显示都是转为int型的
无聊找乐 2013-10-20
  • 打赏
  • 举报
回复
引用 2 楼 rainbowsix 的回复:
Character.isLetter(s.charAt(i)) ? getNumber(Character.toUpperCase(s.charAt(i))) : s.charAt(i) 写反了, 这样写 Character.isLetter(s.charAt(i)) ? s.charAt(i) : getNumber(Character.toUpperCase(s.charAt(i)))
看错了,请忽略
无聊找乐 2013-10-20
  • 打赏
  • 举报
回复
Character.isLetter(s.charAt(i)) ? getNumber(Character.toUpperCase(s.charAt(i))) : s.charAt(i) 写反了, 这样写 Character.isLetter(s.charAt(i)) ? s.charAt(i) : getNumber(Character.toUpperCase(s.charAt(i)))
失落夏天 2013-10-20
  • 打赏
  • 举报
回复
getNumber(Character.toUpperCase(s.charAt(i))) 返回的是assic码吧? 至少返回的是int 具体规则我忘了,好像就是就是以第一个为标准的。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧