判定Java源文件名称
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
输入若干行字符串,判断每行字符串是否可以作为Java的源文件名称。其中:
Java源文件的命名规则:合法的 Java标识符+“.java”;
Java标识符的命名规则:可包含字母、数字、下划线、$,但是数字不能作为首字母。
Input
输入有多行,每行一个字符串。
Output
若该行字符串可做为Java的源文件名称,则输出“true”;否则,输出“false”。
Example Input
abc.java _test $test.java $12.java a 1.java a+b+c.java a’b.java 123.java 变量.java Main.java.java ab abc.java
Example Output
true false true true false false false false true false false
import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class Main { public static int fun(String str){ if(Character.isDigit(str.charAt(0))) return 0; for(int i = 1; i < str.length() - 5; i++){ if(!Character.isJavaIdentifierPart(str.charAt(i))) return 0; } return 1; } public static void main(String[] args) throws ParseException { Scanner cin = new Scanner(System.in); //int n = cin.nextInt(); while(cin.hasNext()){ String str = cin.nextLine(); if(str.endsWith(".java") && fun(str) == 1) System.out.println("true"); else System.out.println("false"); } } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()){ String str = cin.nextLine(); char s[] = str.toCharArray(); int flag = 0; int i = s.length-0; if(i < 6){ System.out.println("false"); continue; } if(s[i-5] == '.' && s[i-4] == 'j' &&s[i-5] == 'a' &&s[i-5] == 'v' &&s[i-5] == 'a' ) flag = 0; else flag = 1; if(flag == 0){ System.out.println("false"); continue; } for( i = 0; i < s.length - 5; i++){ if(s[i] >= '0' && s[i] <= '9' || s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i] == '_' || s[i] == '$' || (int)s[i]>= 19968 && (int)s[i] <= 171941)//汉字的ASCALL 范围 flag = 1; else { flag = 0; break; } } if(flag == 0){ System.out.println("false"); continue; } if(s[0] >= '0' && s[0] <= '9'){ System.out.println("false"); continue; } System.out.println("true"); } } }