识别字符串或数组Java中字符的有效输入

时间:2016-02-21 12:13:48

标签: java arrays string

我们被要求检查每个行示例中字符串的以下输入

A = B + C
A = 3 + C + 99
B = ( ( 4 + B ) + D ) 

现在考虑这些字符串是错误的

+ - :: if two operator are next together
A B :: IF two letters are next together
1 2 :: if two numbers are next together
all numbers must be integer
Letters must only be A B or C
the parenthesis should have endings... ( ) not like ( ( 

现在我认为其中一个解决方案是if else并使用isdigitisalpha并检查彼此相邻的字符,如果它们是相同的字符类型isdigit,isspacechar, isalpha示例,如果这是(当前正在检查[1] [3])array[1][5] = ['A','=','B','+','C'],它看起来就好像['A','=','B'/*checking*/,'+','C'/*checking*/]

因为输入来自我正在执行此操作的文本文件

fR = new FileReader("input.txt");
bR = new BufferedReader(fR);
Inp = new Scanner(fR);
x=0;
while(Inp.hasNextLine()) {
    int y=0;
    while(Inp.hasNextLine()) {
        stringarray[x][y];              
        y++;
    }
    x++;
}

我怎么想这样做? 或者我应该坚持使用数组字符,但我又不知道如何跳过这些空格..所以我想进行不同的讨论......我不知道如何做括号部分。

2 个答案:

答案 0 :(得分:0)

谈论跳过空格使用带有点连接器的trim()方法来删除字符串两边的空格。

答案 1 :(得分:0)

看起来这是两个不同的问题。

1)如何阅读文件内容并在程序中创建要循环的内容
2)如何进行检查

对于(1)我建议像

这样的东西
List<String> lines = new ArrayList<String>();
fR = new FileReader("input.txt");
bR = new BufferedReader(fR);
inp = new Scanner(fR);
try {
    while(inp.hasNextLine()){
        lines.add(imp.nextLine());
    }
    imp.close();
} catch (FileNotFoundException | IOException e) {
    e.printStackTrace();
}

和(2)

String regex = "<regex for checking goes here>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("");

for (String l : lines) {
    if (matcher.reset(s).matches()) {
        // do something
    }
}

您可以在线测试正则表达式字符串:https://regex101.com/

可能需要一段时间才能使字符串正确