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。

    1234563查看Pattern class documentation 了解有关此表达式的更多详细信息。 1234563 em> 喜欢"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非法字符的问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 非法字符的问题-问题解决了,绝对加分!!!

Java非法字符: ‘ufeff‘

Java编译报:java: 非法字符: 'ufeff'

jsp中如何过滤非法字符

java编程中出现的错误“非法字符:\56288”是啥意思?

解析字符串到日期:非法模式字符'T'。