题目链接
题目分析
只需要知道,char类型和int类型之间是有唯一对应关系,可以进行相互转换的,就可以轻松解答这个题目。
解答的方式有多种,按照常规思路,认为输入的就是一个数字,这样判断正负数十分容易,但是从高位向低位依次截取数字就比较麻烦了,所以纯数字的处理可以转换为字符串进行处理,如示例代码1.
将念数字作为一个单独的方法,能够接收从键盘读入的数字。我们可以定义一个字符串数组,里面的元素是从零到九的拼音。然后我们将读入的这个数字转换成一个字符串,并且依次取出每一个字符,利用ASCII码的性质给它减去零这个字符就可以得到数字本身,而这个数字作为下标的话,刚好对应数组里的拼音。然后打印就可以了。
首先需要从键盘读入要读的数字。然后判断一下是不是负数,正数直接调用读数字的方法,负数需要单独打印一个"fu ",然后调用读数字的方法,参数是他的绝对值。
其实,还可以直接用字符串接收输入,然后直接进行判断和操作。如示例代码2
示例代码1
import java.util.Scanner;
public class L1_007 {
public static void main(String[] args) {
//读入一个数字
Scanner input = new Scanner(System.in);
int num = input.nextInt();
input.close();
//判断是否是负数,并控制打印形式
if(num < 0) {
System.out.print("fu" + " ");
//负数要找到绝对值去读
int num_abs = Math.abs(num);
read(num_abs);
}
else {
read(num);
}
}
/**
* @Title: read
* @Description: 读数字
* @param n 设定文件
* @return void 返回类型
* @throws
*/
public static void read(int n) {
//定义一个字符串数组,元素是从零到九的数字的拼音
String[] arr = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int number = n;
//将数字转换为字符串
String str = number +"";
//定义最终要打印的字符串
String print = "";
//遍历字符串
for(int index = 0; index < str.length(); index++) {
//从左往右取到每一个字符
char c = str.charAt(index);
//用取到的字符减字符零,得到的 int 型数字就是数字本身
//用数字本身作为下标获取拼音
int arr_index = c - '0';
//concat(String s) 方法,把指定的字符串连接到这个字符串的末尾
print = print.concat(arr[arr_index] + " ");
}
//trim() 方法,去掉字符串末尾的空格字符
System.out.println(print.trim());
}
}
示例代码2
import java.util.Scanner;
public class L1_007 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//输入的字符串
String str_num = input.nextLine();
input.close();
String[] arr = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
int length = str_num.length();
if('-' == str_num.charAt(0)) {
//是负数
System.out.print("fu ");
for(int i = 1; i < length; i++) {
if(i == length - 1) {
System.out.print(arr[str_num.charAt(i) - 48]);
} else {
System.out.print(arr[str_num.charAt(i) - 48] + " ");
}
}
} else {
for(int i = 0; i < length; i++) {
if(i == length - 1) {
System.out.print(arr[str_num.charAt(i) - 48]);
} else {
System.out.print(arr[str_num.charAt(i) - 48] + " ");
}
}
}
}
}