java非法字符的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java非法字符的问题相关的知识,希望对你有一定的参考价值。
class Person int age; String name ; public void setAge(int age) this.age = age ; public int getAge() return age; public void setName(String name) this.name = name; public String getName() return name; public String getInfo() return "name:" + name + "\n" + "age:" + age ; class Student extends Person String school; public void setSchool (String school) this.school = school; public String getInfo() return "name:" + getName () + "\nage:" + getAge () + "\nschool:" + school ; public class Cx public static void main (String[] args) Student student = new Student (); Person person = new Person (); person.setName ("jeniffer"); person.setAge (25); student.setName ("RR"); student.setAge (24); student.setSchool ("SC");//就是这一行出现非法字符 System.out.println (person.getInfo()); System.out.println (student.getInfo());
参考技术A student.setSchool("SC");//就是这一行出现非法字符
后面的分号是中文的,应该有红线划线提示的。鼠标移动上去也会有详细解释的。
检查非法输入.nextLine Java [重复]
【中文标题】检查非法输入.nextLine Java [重复]【英文标题】:Check illegal input .nextLine Java [duplicate] 【发布时间】:2013-11-29 16:11:50 【问题描述】:我有一个设置为 userInput.nextLine() 的字符串变量,我想检查这个字符串是否包含除数值以外的任何内容。
if(string has non-numeric)
break;
【问题讨论】:
尝试字符串#match。 docs.oracle.com/javase/7/docs/api/java/lang/… 如果这是家庭作业,很可能想要的答案是遍历字符串并逐个字符地检查它 【参考方案1】:尝试 Catch 可能是另一种替代方式。
try
Long.parseInt(string);
用你的数值做任何你需要做的事情。
catch(NumberFormatException ex)
【讨论】:
这是我最初的想法,我在 AP CS 的其他一些作业中使用过这些,但我的老师说要尽量避免使用它们,因为它们“昂贵”是真的吗? 不知道“贵”,到时候请教老师,弄清楚它的“复杂性”,也试试你的问题的最坏情况。不要忘记分享... 据我所知,try catch 方法实际上可能比大多数其他检查更快。解析器以 O(n) 步运行(即输入中的每个字母一步)并且异常运行速度非常快 O(1)(无论输入如何,它始终是 1 步)。事实上,因为许多异常是由 CPU 而不是 java 代码完成的,所以一些异常实际上可以比 if then 语句更快(尽管差异非常小,两者只需要大约百万分之一秒)。 @Nick 希望你得到你想要的东西。 @Thijser 感谢您提供的信息。【参考方案2】:如果您想炫耀,请使用带有正则表达式的 String.matches()。或者您可以使用 String.charAt() 逐个字符地迭代它。
【讨论】:
【参考方案3】:我觉得这样就可以了
String str1 = "123456";
System.out.println(str1.matches("[^0-9]+"));
输出将是false
如果你这样做了
System.out.println(str1.matches("[0-9]+"));
输出将是true
【讨论】:
【参考方案4】:使用string.matches(regex)
函数。正则表达式为\\d+
,并检查输出为false
。
\d
被称为Predefined Character Classes 和表达式X+
:表示X
出现一次或多次,称为Quantifiers。
"1254"
、"-.256"
、"+58.235"
等。
选择任何一种模式,以满足您的需求,而不是匹配您的输入字符串检查它会导致 false
: 意味着不是有效的数字输入。
String pattern = "[\\+\\-]?(\\d+|\\d*\\.\\d+)" ; // or only \\d+
//or [\\+\\-]?\\d+
if(!string.matches(pattern)) // not a valid numeric input
【讨论】:
以上是关于java非法字符的问题的主要内容,如果未能解决你的问题,请参考以下文章