`
Brucegaochina
  • 浏览: 39743 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

验证java变量名是否合法

阅读更多
java中变量的命名规则:
[1]$,数字,下划线打头;后面可以是数字,字母,下划线;
[2]当然变量自然不能是java中的关键字了(程序中还没做判断)
[3]下面是实现的1.0版本,程序还有需要改进的地方,大家不妨指出啊

package com.img.algorithm;

import java.util.Scanner;

/**
 * @author Bruce
 * @since 1.0
 * 
 */
public class CheckJavaName {

	public static void main(String[] args) {
		Scanner sca = new Scanner(System.in);
		String name = sca.next();
		
		String result = checkJavaName(name);
		System.out.println(result);
	}
	
	/**
	 * @param variable name of java 
	 * @return true if name is acceptable else return false
	 */

	private static String checkJavaName(String name)
	{
		//the variable could not be null or empty and ""
		if(name == null || name.length() == 0 || name.trim() == "")
			return "Variable of java could not empty , null or \"\"!";
		
		//check the first character
		char first = name.charAt(0);
		if(!isFirstChar(first))
		{
			return "The first character of java variable is invalid!";
		}
		
		//check the content of the name after the first character
		for(int i = 1; i < name.length(); i++){
			char c = name.charAt(i);
			if((!Character.isLetterOrDigit(c)) && (c != '_'))
				return "The remaining content contains invalid characters";		}
		
		return null;
		
	}
	
	/**
	 * @param A character
	 * @return true if the char contains in the list else return false
	 */
	private static boolean isFirstChar(char c)
	{
		switch(c){
		case 'A': return true;
		case 'B': return true;
		case 'C': return true;
		case 'D': return true;
		case 'E': return true;
		case 'F': return true;
		case 'G': return true;
		case 'H': return true;
		case 'I': return true;
		case 'J': return true;
		case 'K': return true;
		case 'L': return true;
		case 'M': return true;
		case 'N': return true;
		case 'O': return true;
		case 'P': return true;
		case 'Q': return true;
		case 'R': return true;
		case 'S': return true;
		case 'T': return true;
		case 'U': return true;
		case 'V': return true;
		case 'W': return true;
		case 'X': return true;
		case 'Y': return true;
		case 'Z': return true;
		case 'a': return true;
		case 'b': return true;
		case 'c': return true;
		case 'd': return true;
		case 'e': return true;
		case 'f': return true;
		case 'g': return true;
		case 'h': return true;
		case 'i': return true;
		case 'j': return true;
		case 'k': return true;
		case 'l': return true;
		case 'm': return true;
		case 'n': return true;
		case 'o': return true;
		case 'p': return true;
		case 'q': return true;
		case 'r': return true;
		case 's': return true;
		case 't': return true;
		case 'u': return true;
		case 'v': return true;
		case 'w': return true;
		case 'x': return true;
		case 'y': return true;
		case 'z': return true;
		case '_': return true;
		case '$': return true;
		}
		return false;
	}

}



注释:对于函数isFirstChar的实现有没有更加简单的实现呢?这里的时间复杂度是O(1)
分享到:
评论

相关推荐

    java范例开发大全源代码

     实例95 Java合法标识符 122  实例96 显示一周各星期的名称 123  实例97 构造空心方框 124  实例98 这一天是星期几 125  实例99 大小写互换 127  实例100 输出指定范围的素数 128  实例101 我...

    java范例开发大全

    实例95 Java合法标识符 122 实例96 显示一周各星期的名称 123 实例97 构造空心方框 124 实例98 这一天是星期几 125 实例99 大小写互换 127 实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术...

    JAVA实验报告-实验1-.doc

    " "不同单词出现在相同变量名里时要用下划线相连 " "三 程序名字 " "文件Simple.java " "只是一个输出信息的简单程序。这个程序的名称用的是Simple,但其实我们" "可以选一个其他的标识符来表示程序名,只要我们...

    Java范例开发大全 (源程序)

     实例95 Java合法标识符 122  实例96 显示一周各星期的名称 123  实例97 构造空心方框 124  实例98 这一天是星期几 125  实例99 大小写互换 127  实例100 输出指定范围的素数 128  实例101 我出现了几...

    Java范例开发大全(全书源程序)

    实例95 Java合法标识符 122 实例96 显示一周各星期的名称 123 实例97 构造空心方框 124 实例98 这一天是星期几 125 实例99 大小写互换 127 实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例004 验证Java开发环境 7 实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发工具 11 实例007 下载最新的Eclipse 11 实例008 为最新的Eclipse安装中文语言包 12 实例009 活用...

    java范例开发大全(pdf&源码)

    实例95 Java合法标识符 122 实例96 显示一周各星期的名称 123 实例97 构造空心方框 124 实例98 这一天是星期几 125 实例99 大小写互换 127 实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术...

    Java学习笔记(必看经典)

    注:方法名中的参数int a,int b为局部变量 类方法中的一类特殊方法:构造方法。 构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。 注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成...

    网狐荣耀版开发使用常见问题解答

    系统变量中进行JAVA_HOME、CLASSPATH、Path三个变量的配置,有的编辑,没有的新建。新建JAVA_HOME对应C:\Program Files\Java\Jdk1.8、新建CLASSPATH对应.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar、编辑Path的...

    JSTL详细标签库介绍

    以下这些情况都可以引发异常:您的代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等&lt;BR&gt;&lt;BR&gt;《Exception Handling for C++》关于异常处理论文,向...

    Scala程序设计(第2版)

    2.11 用文件和名空间组织代码 54 2.12 导入类型及其成员 55 2.12.1 导入是相对的 56 2.12.2 包对象 57 2.13 抽象类型与参数化类型 57 2.14 本章回顾与下一章提要 59 第3章 要点详解 60 3.1 ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样...

    正则表达式

    (x) 匹配x保存x在名为$1...$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个...

    iuhyiuhkjh908u0980

    ANT十五大最佳实践 http://www.oreilly.com.cn/news/ant15toppractices.php?c=javaTutorial:Hello World with Ant http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html ANT:解压,设置两项环境变量:ANT...

    Smart Admin通用型中后台解决方案-其他

    3、我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。4、我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其996.ICU5、...

    Smart Admin通用型中后台解决方案 v1.0.9

    3、我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。 4、我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其996.ICU ...

Global site tag (gtag.js) - Google Analytics