1、字符读取
eg:读取身份证的第17位;当前位置为奇数,是男生;当前位置是偶数,是女生。
input:身份证
output: Boy 或者 Girl
以下有三个方法
1、转化为字符数组,枚举奇数或者偶数进行对比。
这里用到了两种方式。转化后读取数组、直接读取字符串对应位置字符
第二个注意的点是条件语句的条件,两个表达方式,字符或是数字,但是这里是ASCII码。
0--->48 9--->48+9即57
import java.util.Scanner;
public class 身份证17位 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String idcard = sc.next(); // 读取身份证
char[] s = idcard.toCharArray();
System.out.println(s[16]); // 下标索引是从0开始,故16即17位数
// 0--->48 9--->48+9
if(s[16]=='1'||s[16]=='3'||s[16]=='5'||s[16]=='7'||s[16]==48+9) {
System.out.println("Boy");
}else {
System.out.println("Girl");
}
if(idcard.charAt(16)=='1'||idcard.charAt(16)=='3'||idcard.charAt(16)=='5'
||idcard.charAt(16)=='7'||idcard.charAt(16)==48+9) {
System.out.println("Boy");
}else {
System.out.println("Girl");
}
}
}
2、这里是转化为int整型。两种方式,利用减去‘0’,得到位置差,也就对应着数字
另一种方式是通过Integer类的valueOf函数或者parseInt函数得到值。
import java.util.Scanner;
public class 身份证17位 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String idcard = sc.next();
int n = idcard.charAt(16)-'0';
int m = Integer.valueOf(idcard.substring(16,17));
System.out.println(n/2==0?"Boy":"Girl");
System.out.println(m/2==0?"Boy":"Girl");
}
}
3、字符串的两种查询方式;
一是可以通过indexOf获取子字符串是否在字符串,如果没有一样的子串,会返回-1;
另一是可以通过contains 返回布尔类型,存在子串为true。
import java.util.Scanner;
public class 身份证17位 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String idcard = sc.next();
String pos17 = idcard.substring(16,17);
System.out.println("13579".indexOf(pos17)==-1?"Gril":"Boy");
System.out.println("13579".contains(pos17)?"Boy":"Girl");
}
}