熟悉String方法的使用之判断文件名是否合法

学习之余,写个小练习来巩固一下String的方法应用。

任务:

1、判断用户选择要输入的内容的类型

2、如果是java文件,输出“您输入的是java文件名”

3、如果是邮箱地址,输出“您输入的是邮箱地址”

4、如果都不是,输出“无法解析您输入的内容”

代码如下:

     public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean flag = true;
do {
System.out.println("请您要判断的内容:");
String name = in.next(); switch (Jude(name)) {
case 1:
System.out.println("您输入的是java文件名");
flag = false;
break;
case 2:
System.out.println("您输入的是邮箱地址");
flag = false;
break;
case -1:
System.out.println("无法解析您输入的内容,请重新输入!");
break;
}
} while (flag);
in.close();
} /*
* 判断格式
*/
private static int Jude(String Name) { int count1 = 0;// 字符串中包含.的个数
int count2 = 0;// 字符串中包含@的个数 for (int i = 0; i < Name.length(); i++) {// 统计个数
if (Name.charAt(i) == '.') {
count1++;
}
if (Name.charAt(i) == '@') {
count2++;
}
}
if (count1 == 1 && count2 == 1) {
// 获取邮箱中"@"符号的位置
int index2 = Name.indexOf('@');
// 获取邮箱中"."号的位置
int index3 = Name.indexOf('.');
if (index2>0 && index3-index2> 1&&index3!=Name.length()-1) {// 判断必须包含"@"符号,且"@"必须在"."之前 return 2;
}
}
if (count1 > 0) {
// 获取文件名中最后一次出现"."号的位置
int index = Name.lastIndexOf('.');
// 获取文件的后缀
String prefix = Name.substring(index); // 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
if (index != -1 && index != 0 && prefix.equals(".java")) { return 1;
}
}
return -1; }

运行结果:


这是按照我自己理解写的小程序,主要是用来熟悉String类的方法的使用,可能有很多需要改进的地方,如果有错误的地方请指出来谢谢!!

JAVA基础——编程练习(三)的更多相关文章

  1. 6、50道JAVA基础编程练习题跟答案

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...

  2. 50道JAVA基础编程练习题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  3. 50道JAVA基础编程练习题 - 题目

    50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...

  4. [Java并发编程(三)] Java volatile 关键字介绍

    [Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...

  5. MQ java 基础编程

    MQ java 基础编程 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : wenjunwu430@gmail.com 前言 通过 2 个多星期对 MQ 学习,在 partner 丁 & ...

  6. java基础解析系列(三)---HashMap

    java基础解析系列(三)---HashMap java基础解析系列 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...

  7. java 网络编程(三)---TCP的基础级示例

    下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果 ...

  8. JAVA基础——编程练习(二)

    JAVA编程练习(二) 今天我为了巩固之前的java基础知识的学习,再次进行实战演习,编写了一个小小的java控制台程序,主要是运用java面向对象的思想来完成这个小项目. 一.项目背景介绍 根据所学 ...

  9. Java多线程编程核心技术(三)多线程通信

    线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

  10. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

随机推荐

  1. eclipse egit(分支管理 下)

    在Git的分支merge中,不可能没有代码的冲突问题,特别在跟别人分工合作时.那该怎么解决? 1.新建一个conflict分支,在dev方法下添加一句 System.out.println(“Crea ...

  2. 因浏览器而异的空白节点(js清除空白节点)

    先看下面的代码:<dl id="dll">  <dt>title</dt>  <dd>definition</dd>&l ...

  3. 05-nginx定时任务完成日志切割

    目标:每天晚上凌晨一点钟左右把昨天的任务给它切掉,把昨天的日志给它改个名存起来,根据昨天的时间给它改个名存起来,所以要根据日期生成文件名. 也许你不会写bash脚本,但是老师带着你一步一步地来. sh ...

  4. codeforce 457DIV2 C题

    题意 你需要构造一个n个点m条边的无向有权图,要求这个图的MST中边权的和与从1到n的最短路长度都为素数 分析 可以想到这样一种贪心,在i到i+1直接连一条边,这样最短路和MST都会是同样的一些边.只 ...

  5. bootstrap中的data-dismiss属性

    <button type="button" class="btn default" data-dismiss="modal">关 ...

  6. EF删除,查询,Linq查询,Lambda查询,修改链接字符串

    (1)//删除操作 public bool delete() { try { a_context = new AEntities(); b1 = new Table_1(); //删除只需要写主键就行 ...

  7. 使用python创建生成动态链接库dll

    如今,随着深度学习的发展,python已经成为了深度学习研究中第一语言.绝大部分的深度学习工具包都有python的版本,很多重要算法都有python版本的实现.为了将这些算法应用到具体工程中,这些工具 ...

  8. realsense and Mask_RCNN

    ###################librealsense and Mask_RCNN cd RealSennse/librealsense2018091501/librealsense/wrap ...

  9. C/C++ 经典面试题汇总

    面试题1:变量的声明和定义有什么区别 ? 为变量分配地址和存储空间的称为定义,不分配地址的称为声明.一个变量可以在多个地方声明,但是只在一个地方定义.加入extern修饰的是变量的声明,说明此变量将在 ...

  10. HTTP请求:POST和GET的差异

    1,一般情况下应用目的不同:GET是从服务器上获取数据,POST是向服务器传送数据. 2,将数据提交到服务器的方式不同:GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各 ...