gpt4 book ai didi

java - 我的代码正在打印每一个字,它不应该

转载 作者:行者123 更新时间:2023-11-29 09:31:25 25 4
gpt4 key购买 nike

基本上,我编写了扫描文档的代码,然后检查它是否是我所说的“正确”词。一个正确的词是一个只有字母但后面可以跟任何标点符号的词。所以“你好”和“for4893859.;.;;.”将是适当的词,但“嗨, jack ”和“反事物”将不是适当的词。该代码只应打印正确的单词,但出于某种原因,我认为它跳过了 for 循环并只打印了所有单词。

Scanner test= new Scanner(new File("Test.txt"));
while(test.hasNext()) {
String word=test.next();
char [] curr=word.toCharArray();
boolean check1=false;
boolean check2=false;
for(int i=0; i<curr.length; i++) {

if(!Character.isLetter(curr[i])) {
check1=true;
System.out.println(check1);
continue;
}
if(check1 && Character.isLetter(curr[i])) {
check2=true;
System.out.println(check2);
break;
}
}
if((check1 && !check2)||(!check1 && !check2)) {
System.out.println(word);
}

最佳答案

我不确定您的逻辑应该做什么。由于您的问题是关于是否打印单词的 boolean 逻辑,我认为重构 boolean 逻辑以使其更清晰会对您有所帮助。您可以在两个地方执行此操作,在第二个和第三个 if 表达式上。这是您的代码的等效版本:

Scanner test= new Scanner(new File("Test.txt"));
while(test.hasNext()) {
String word=test.next();
char [] curr=word.toCharArray();
boolean check1=false;
boolean check2=false;
for(int i=0; i<curr.length; i++) {

if(!Character.isLetter(curr[i])) {
check1=true;
System.out.println(check1);
continue;
}
if(check1) {
check2=true;
System.out.println(check2);
break;
}
}
if(!check2) {
System.out.println(word);
}

这个逻辑似乎是说不要打印任何包含非字母字符后跟至少一个字母字符的单词。

关于java - 我的代码正在打印每一个字,它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521557/

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