得到错误,我不知道为什么

时间:2014-10-23 12:04:32

标签: java compilation expression

我正在尝试检查字符串的语法。

class EMailAdress {

    public static String fname;
    public static String lname;
    public static String org1;
    public static String org2;
    public static String domain;

    public static void main(String[] args) {
        Out.println("Bitte geben sie eine Email-Adresse ein:");
        fname = In.readIndentifier();
        if (!In.done()) {
            Out.println("fname nicht gelessen");
            return;
        }
        char c1 = In.read();
        if (c1 !== ('.' || '@')) {

            Out.println("@ erwartet");
            return;
        }
        if (c1.equals('.')) {
            lname = In.readIndentifier();
        } else {
            org1 = In.readIndentifier();
            return;
        }
        char c2 = In.read();
        if (c2 !== ".") {
            Out.println(". erwartet");
            return;
        }
        org2 = In.readIndentifier();
        if (!In.done()) {
            domain = In.readIndentifier();
        }
        if (!doman.equals("at" || "com" || "net")) {
            Out.println("at, com, net erwartet");
            return;
        }
        Out.println("Korrekte Email erkannt!");
        Out.println("Name:" + fname + " " + lname);
        Out.println("Organisation:" + org1 + " " + org2);
        Out.println("Email:" + fname + c1 + lname + org1 + c2 + org2 + domain);
    }

}

我无法编译此代码,我不明白为什么。 In.readIndentifier是我可以使用的方法,in.done也是如此。

2 个答案:

答案 0 :(得分:0)

您的代码中有一些奇怪的内容,不确定InOut是什么,但这是第一件事

if (c1 !== ('.' || '@'))

应该是

if (c1 != '.' && c1 !='@')

这是另一个

if (c2 !== ".")

java不是javascript,对于您正在使用的==!=

进行比较

还有一个

 if (!doman.equals("at" || "com" || "net")) {

equals将对象作为参数而非hmm ...无效操作 所以你需要在

中拆分它
 if (!(doman.equals("at")&&doman.equals("com")&&doman.equals("new")))

和另一个

char c1 = In.read();
... 
if (c1.equals('.'))

c1是原始的而非Object,因此它没有方法equals

答案 1 :(得分:0)

使用 java.util.regex.Pattern 验证字符串是一种更简单的方法。 您只需要根据需要指定模式。这是一个有效的例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Runner {

    private Pattern pattern;
    private Matcher matcher;

    private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
            + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

    public Runner() {
        pattern = Pattern.compile(EMAIL_PATTERN);
    }

    public boolean validate(final String email) {

        matcher = pattern.matcher(email);
        return matcher.matches();
    }

    public static void main(String args[]) {

        Runner runner = new Runner();
        System.out.println("abc@net.com " + runner.validate("abc@net.com"));
        System.out.println("abcnet.com " + runner.validate("abcnet.com"));
    }
}

您可以在这里找到extra patterns