gpt4 book ai didi

Java 递归表达式检查器

转载 作者:行者123 更新时间:2023-12-01 09:27:36 25 4
gpt4 key购买 nike

设计函数来输入一个字符串并输出“true”或“false”——告诉该字符串是否是一个表达式。

打印一条消息,告知该字符串是否是格式良好的表达式。最后,处理完所有输入后,程序打印一条退出消息并停止。 以下规则定义了格式良好的表达式:

.expr> = S | I(C)T(.exp>)

这是我的代码:

import java.io.FileNotFoundException;
import java.util.*;
import java.util.Scanner;

public class RecursionExpression {


public static void main(String[] args) throws FileNotFoundException{
System.out.println("Enter the expression statement.");
Scanner keyboard = new Scanner(System.in);
String expr = keyboard.nextLine();
}
public static boolean expression(String n)
{
if (n.charAt(0) == 's')
return true;
else if(n.length() >=6)
{
if (n.substring(0,5) == "I(C)T")
return expression(n.substring(6, n.length()-1));


}
return false;

}
}

最佳答案

首先,第一个字符是 's' 的条件是不够的(根据规则,它应该是大写的 'S' BTW)。这甚至可能引发空字符串异常。此外,它接受以 s 开头的任何字符串,包括“so you need this string to match too”

此外,您不检查 .exp> 周围的 () 括号,这也需要完成。此外,将非编译时常量的 String== 进行比较是行不通的(请参阅 How do I compare strings in Java? ):

public static boolean expression(String n) {
return n.equals("S") ||
(n.startsWith("I(C)T(") && n.endsWith(")") && expression(n.substring(6, n.length()-1)));
}

关于Java 递归表达式检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719003/

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