gpt4 book ai didi

java - java 初学者词法分析器

转载 作者:行者123 更新时间:2023-12-01 15:04:53 26 4
gpt4 key购买 nike

我正在编写一个词法分析器。我知道这非常简单。它运行,但每当输入输入时,程序都会将其视为无效字符(即使它们应该是有效的)。我做错了什么?

import java.util.*;
import java.util.Scanner;

public class LAnalyze{

public static int i;

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
String s;


System.out.println("Input something to lexically analyze: ");
s = input.next( );
int j = 1;

if( s.charAt(i)!='a'||s.charAt(i)!='b'||s.charAt(i)!='c'||s.charAt(i)!='d'||s.charAt(i)!='e'||s.charAt(i)!='f'||
s.charAt(i)!='g'||s.charAt(i)!='h'||s.charAt(i)!='i'||s.charAt(i)!='j'||s.charAt(i)!='k'||s.charAt(i)!='l'||
s.charAt(i)!='m'||s.charAt(i)!='n'||s.charAt(i)!='o'||s.charAt(i)!='p'||s.charAt(i)!='q'||s.charAt(i)!='r'||
s.charAt(i)!='s'||s.charAt(i)!='t'||s.charAt(i)!='u'||s.charAt(i)!='v'||s.charAt(i)!='w'||s.charAt(i)!='x'||
s.charAt(i)!='y'||s.charAt(i)!='z'||s.charAt(i)!='A'||s.charAt(i)!='B'||s.charAt(i)!='C'||s.charAt(i)!='D'||
s.charAt(i)!='E'||s.charAt(i)!='F'||s.charAt(i)!='G'||s.charAt(i)!='H'||s.charAt(i)!='I'||s.charAt(i)!='J'||
s.charAt(i)!='K'||s.charAt(i)!='L'||s.charAt(i)!='M'||s.charAt(i)!='N'||s.charAt(i)!='O'||s.charAt(i)!='P'||
s.charAt(i)!='Q'||s.charAt(i)!='R'||s.charAt(i)!='S'||s.charAt(i)!='T'||s.charAt(i)!='U'||s.charAt(i)!='V'||
s.charAt(i)!='W'||s.charAt(i)!='X'||s.charAt(i)!='Y'||s.charAt(i)!='Z'||s.charAt(i)!='0'||s.charAt(i)!='1'||
s.charAt(i)!='2'||s.charAt(i)!='3'||s.charAt(i)!='4'||s.charAt(i)!='5'||s.charAt(i)!='6'||s.charAt(i)!='7'||
s.charAt(i)!='8'||s.charAt(i)!='9'||s.charAt(i)!='-'||s.charAt(i)!='_'||s.charAt(i)!=' ') {

for (int i = 0; i < s.length(); i++) {
System.out.println("Token " + j + " = " + (s.charAt(i)));
j++;
}
}
else {
System.out.println("Invalid character(s) entered.. Program terminated!\n");
System.exit(0);
}

}
}

最佳答案

似乎不可能从这段代码中得到你所说的结果。你的 if 语句是错误的。就目前情况而言,这将永远是正确的。一个字符总是不等于某个字符或不等于另一个字符。所有 != 都应该是 ==。我还会在报告它的其他部分打印出坏字符:

System.out.println("bad character " + s.charAt(i) +
" decimal value: " + (int) s.charAt(i));

扫描程序自行进行词法分析,也就是说,它返回标记,而不是整个字符串。我认为您应该使用控制台并获取输入的所有内容:

Console console = System.console();
s = console.readLine("Input something to lexically analyze: ");

关于java - java 初学者词法分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13113274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com