JAVA基础——编程练习(三)

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




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

任务:

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

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

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

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

代码如下:

 1     public static void main(String[] args) {
 2         Scanner in = new Scanner(System.in);
 3         boolean flag = true;
 4         do {
 5             System.out.println("请您要判断的内容:");
 6             String name = in.next();
 7
 8             switch (Jude(name)) {
 9             case 1:
10                 System.out.println("您输入的是java文件名");
11                 flag = false;
12                 break;
13             case 2:
14                 System.out.println("您输入的是邮箱地址");
15                 flag = false;
16                 break;
17             case -1:
18                 System.out.println("无法解析您输入的内容,请重新输入!");
19                 break;
20             }
21         } while (flag);
22         in.close();
23     }
24
25     /*
26      * 判断格式
27      */
28     private static int Jude(String Name) {
29
30         int count1 = 0;// 字符串中包含.的个数
31         int count2 = 0;// 字符串中包含@的个数
32
33         for (int i = 0; i < Name.length(); i++) {// 统计个数
34             if (Name.charAt(i) == ‘.‘) {
35                 count1++;
36             }
37             if (Name.charAt(i) == ‘@‘) {
38                 count2++;
39             }
40         }
41         if (count1 == 1 && count2 == 1) {
42             // 获取邮箱中"@"符号的位置
43             int index2 = Name.indexOf(‘@‘);
44             // 获取邮箱中"."号的位置
45             int index3 = Name.indexOf(‘.‘);
46             if (index2>0 && index3-index2> 1&&index3!=Name.length()-1) {// 判断必须包含"@"符号,且"@"必须在"."之前
47
48                 return 2;
49             }
50         }
51         if (count1 > 0) {
52             // 获取文件名中最后一次出现"."号的位置
53             int index = Name.lastIndexOf(‘.‘);
54             // 获取文件的后缀
55             String prefix = Name.substring(index);
56
57             // 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
58             if (index != -1 && index != 0 && prefix.equals(".java")) {
59
60                 return 1;
61             }
62         }
63         return -1;
64
65     }

运行结果:



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

时间: 2024-11-14 18:29:48

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

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

1 50道JAVA基础编程练习题 2 [程序1] 3 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 4 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 5 public class Prog1{ 6 public static void main(String[] args){ 7 int n = 10; 8 System.out.println("第"+n+

JAVA基础编程练习题

50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class Prog1{ public static void main(String[] args){ int n = 10; System.out.println("第"+n+"个月兔子总数为&qu

50道JAVA基础编程练习题

50道JAVA基础编程练习题[程序1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....public class Prog1{public static void main(String[] args){ int n = 10; System.out.println("第"+n+"个月兔子总数为"+f

Java基础知识的三十个经典问答

Java基础知识的三十个经典问答 1.面向对象的特点 抽象: 抽象是或略一个主题中与当前目标的无关的因素,一边充分考虑有关的内容.抽象并不能解决目标中所有的问题,只能选择其中的一部分,忽略其他的部分.抽象包含两个方面:一是过程抽象:一是数据抽象. 继承 继承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法.对象的一个新类可以从现有的类中派生,这叫做类的继承.心累继承了原始类 的特性,新类称为原始类的派生类或者是子类,原始类称为新类的基类或者父类.子类可以从父类那里继承父类的

MQ java 基础编程(一)

本文转自:http://www.blogjava.net/i369/articles/88035.html 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : [email protected] 前言 通过 2 个多星期对 MQ 学习,在 partner 丁 & partner 武 的帮助下完成了该文档.该文档提供一个简单的例子,通过对该例子的讲解,你将知道: 1.         用 java 写客户端从 MQ Server 收发消息. 2.         MQ 作为 Websp

java基础编程题

java基础编程题 1.打印出如下图案 1 public class Prog19{ 2 public static void main(String[] args){ 3 int n = 5; 4 printStar(n); 5 } 6 7 //打印星星 8 private static void printStar(int n){ 9 //打印上半部分 10 for(int i=0;i<n;i++){ 11 for(int j=0;j<2*n;j++){ 12 if(j<n-i) 1

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

下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果连接建立成功,说明数据传输通道已经建立,该通道就是Socket的I/O流,是底层建立好的,既然是流,就说明有输入流,就有输出流,要换取就找socket获取相关的流即可,   getInputStream()和getOutputStream()的字节流.3.使用输出流,将数据输出:使用输入流,把数据输

Java基础总结(三)

一.开始的唠叨 Java中有一大块的内容是组件及事件处理,一刷Java时是为了写Web,前端有Html没学这部分内容.二刷时已经在做Android了,前端有自带的组件,依然跳过. 我也不建议道友去学习这部分内容,现在真的有人用Java写C/S吗? 二.学习笔记 (一)输入输出流 1.流:输入流.输出流是针对程序而言的. 所有输入流都是InputStream(字节输入流)或Reader(字符输入流)的子类: 所有输出流都是OutputStream(字节输出流)或Writer(字符输出流)的子类:(

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

线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督.在本章中需要着重掌握的技术点如下: 使用wait/notify实现线程间的通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 1.等待 / 通知机制 通过本节可以学习到,线程与线程之间不是独立的个体,它们彼此

Java基础——集合(三)——泛型、增强for、工具类

         接上篇,<Java基础--集合(二)--迭代器.Map集合> 六.泛型 (1)定义: 泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型. (2)格式: <数据类型> ArrayList<String> aList=new ArrayList<String>(); <String> 即表示的是泛型 (3)好处:(掌握) A:解决了黄色警告线问题 B:把运行期间的转换异常给提前到了编译期间 C:优化了程序