问答详情
源自:2-3 Java 中 String 类的常用方法 Ⅰ

Java字符串代码

以下代码有什么错误?

public class HelloWorld {
    public static void main(String[] args) {
        // Java文件名
    	String fileName = "HelloWorld.java"; 
        // 邮箱
		String email = "laurenyang@imooc.com";
		
		// 判断.java文件名是否正确:合法的文件名应该以.java结尾
        /*
        参考步骤:
        1、获取文件名中最后一次出现"."号的位置
        2、根据"."号的位置,获取文件的后缀
        3、判断"."号位置及文件后缀名
        */
        //获取文件名中最后一次出现"."号的位置
		int index =lastIndexOf('.'); 
        
        // 获取文件的后缀
		String prefix =filename.substring(filename.lastIndexOf('.')+1);
        
		// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
		if ( index!=-1&&index!=0&&prefix.equals("java")) {
			System.out.println("Java文件名正确");
		} else {
			System.out.println("Java文件名无效");
		}

        // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
         /*
        参考步骤:
        1、获取文件名中"@"符号的位置
        2、获取邮箱中"."号的位置
        3、判断必须包含"@"符号,且"@"必须在"."之前
        */
	    // 获取邮箱中"@"符号的位置
		int index2 = email.lastIndexOf('@');
        
        // 获取邮箱中"."号的位置
		int index3 = email.lastIndexOf('.');
        
		// 判断必须包含"@"符号,且"@"必须在"."之前
		if (index2 != -1 && index3 > index2) {
			System.out.println("邮箱格式正确");
		} else {
			System.out.println("邮箱格式无效");
		}
	}
}


提问者:化糖 2016-08-06 11:34

个回答

  • qq_张浩_7
    2016-08-22 12:12:23

    16行应该是int index =fileName.lastIndexOf('.'); 

  • 慕粉3790219
    2016-08-06 11:59:22

    19行  你写的是 filename  应该是fileName  

  • Floyd3343868
    2016-08-06 11:58:48

    首先后缀名是个范围 不是一个值  你写成了filename.lastIndexOf('.')+1

    String prefix =fileName.substring(index+1,fileName.length());