为什么我.在首位java还能运行成功?

来源:2-3 Java 中 String 类的常用方法 Ⅰ

qq_慕虎6321845

2020-06-28 16:56

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 = fileName.lastIndexOf(".");

        // 获取文件的后缀

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

        

// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"

if ( index!=0                           ) {

System.out.println("Java文件名正确");

} else {

System.out.println("Java文件名无效");

}


因为我知道.在首位程序应该会返回index=0,于是我把获取文件的后缀改成String prefix =fileName.substring(index,fileName.length());

获取的就是.在首位,接着判断index!=0则输出java运行成功,否则失败,按道理应该输出失败才对,可结果居然输出java运行成功,不懂为什么会这样,求大佬解答


写回答 关注

2回答

  • qq_慕斯卡2160049
    2020-07-08 16:30:39
    已采纳

    prefix.equals("java")错了,应该为prefix.equals(".java"),因为你的prefix字符串是".java"

  • qq_慕虎6321845
    2020-06-28 17:04:17

    当我把代码改成if (index!=-1&&index!=0&&prefix.equals("java") ) ,        String prefix =fileName.substring(index,fileName.length());这个不改动,结果却变成

    运行成功,输出错误

    Java文件名无效
    邮箱格式正确


    weixin...

    String prefix =fileName.substring(index+1);这个也行

    2020-08-21 10:08:29

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题