谁能告诉我如何编写一个程序,其中我必须从文本文件中读取ac程序,然后计算if-else语句的数量,但不包括嵌套的if-
else。在此程序中,我已经计算了文本文件中if和else的数量,但是如何从此计数中排除嵌套的if?请帮助我。
package softwaretesting;
import java.io.*;
import java.util.Scanner;
public class SoftwareTesting {
public static void main(String[] args) throws IOException {
int countIf = 0, countElse = 0;
Scanner input;
input = new Scanner(System.in);
String fileName;
System.out.println("Enter the path of the file from which no of if and else statements are to be counted");
fileName = input.next();
Scanner file;
file = new Scanner(new File(fileName));
int count=0;
while (file.hasNextLine())
{
String line = file.nextLine();
if (line.indexOf("if") != -1 && count%2==0 )
{
countIf++;
}
if (line.indexOf("else") != -1 )
{
countElse++;
}
}
{
System.out.println("No of If statements: " + countIf);
System.out.println("No of Else statements: " + countElse);
}
}
}
通常,以计数方式指定if-else语句是错误的,因为在编程语言中,if-else语句不仅是包含if
或的行else
(请考虑注释中的“ if”或“
else”词,依此类推)。这完全是由一组特定规则(语法)定义的语言的语句。而且,您的代码甚至不会从C程序成功返回,这可能是不正确的…
因此,解决此问题的最终方法是为输入程序构建AST树,并仅对顶级if-
else语句进行遍历。
有几种工具可以帮助您。
它们都可以从指定的语法生成语言解析器。您可以使用这些解析器来确定输入程序所包含的内容。
这种方法的主要问题是找到(创建?)正确的语法。例如,ANTLR(https://github.com/antlr/grammars-v4)和JavaCC(https://java.net/projects/javacc/downloads/directory/contrib/grammars)都有很多语法;但它们都不能用于生成AST-
仅会产生纯解析。另一方面,由于您只需要计算if-else语句,因此仅解析(不带AST树)可能会比较好…
因此,目前有两种可能的解决方案:
问题内容: 考虑以下未格式化的嵌套Java代码 我的问题是:根据Java语言规范,分支适用于什么? 通过手动重新格式化并添加括号,这两个是正确的? 区块1: 区块2: 问题答案: 从文档中: Java编程语言(例如C和C ++)以及它们之前的许多编程语言,任意决定了else子句可能属于其最内部。
问题内容: 我想在lambda函数中使用if … elif … else将lambda函数应用于DataFrame列。 df和代码都是smth。喜欢: 显然,这种方式是行不通的。如果.... elif ....其他不适合lambda,有什么方法可以应用?如何使用List Comprehension关联相同的结果? 感谢您的任何回复。 问题答案: 巢号:
问题内容: 我有这样的说法 而且我非常怀疑是否在每次不满足第一个条件()时都执行else块,这可能吗?我在缩进方面做错了吗? 问题答案: 该子句对应于您期望的相同缩进级别。 您看到的问题可能是由于您混合了制表符和空格,所以缩进的表观级别与您的解释器看到的级别不同。 将所有选项卡更改为空格,然后检查问题是否消失。
本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执
Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供
if语句之后可以跟一个可选的else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if...else if…else语句时,请记住 - 一个if可以有零个或一个else语句,它必须在任何其他if之后。 如果语句可以有零到多个if,它们必须在else之前。 一旦else if成功,其余的if或else语句都不会被测试。 if ... else