Java 输出自动显示,无需执行任何操作

Java 输出自动显示,无需执行任何操作,java,Java,所以,我试图创建一个程序来计算考试的分数。我们要做的是给出一个由X和0组成的字符串模式,即000XXX000XXX,其中“X”的值为0,每个0的值为1,并且对于每个连续的“0”,值增加1。如果假设有2个或更多连续的0,然后是一个“X”,则“0”的值将重置为1。如果程序对您来说很常见,则,是的,这是一个来自OJ的问题,它是由我大学的一名大四学生交给我解决的。现在的问题是,我已经了解了代码的工作原理并解决了问题。但代码中似乎存在一个问题 package javaapplication4; impo

所以,我试图创建一个程序来计算考试的分数。我们要做的是给出一个由X和0组成的字符串模式,即000XXX000XXX,其中“X”的值为0,每个0的值为1,并且对于每个连续的“0”,值增加1。如果假设有2个或更多连续的0,然后是一个“X”,则“0”的值将重置为1。如果程序对您来说很常见,则,是的,这是一个来自OJ的问题,它是由我大学的一名大四学生交给我解决的。现在的问题是,我已经了解了代码的工作原理并解决了问题。但代码中似乎存在一个问题

package javaapplication4;

import java.util.Scanner;

public class JavaApplication4 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T, score = 0, f = 0, g = 0;
    String str;
    int len;
    T = sc.nextInt();

    for (int i = 1; i <= T; i++) {
        str = sc.nextLine();
        len = str.length();

        for (int j = 0; j < len; j++) {
            if (str.charAt(j) == '0') {
                f++;
                score = score + f;

            }
            else if(str.charAt(j) == 'X')
            {
                f = 0;
                score = score + g;
            }
        }

        System.out.println(score);

    }
}

}
sc.nextLine()会触发sc.nextLine(),因此您会得到一个空字符串的输出,这就是为什么它为零,通过使用sc.nextLine()输入您的测试用例号,您可以防止这种情况:

        int score = 0;
        System.out.println("Enter test case:");
        int testCase= Integer.parseInt(sc.nextLine());

        for (int i = 1; i <= testCase; ++i)
        {
            System.out.println("Enter pattern:");
            String str = sc.nextLine();
                for (int j = 0; j < str.length(); j++)
                {
                    if (str.charAt(j) == '0')
                    {
                        score += 1;

                    }
                    else if (str.charAt(j) == 'X')
                    {
                        score += 0;
                    }
                }

                System.out.println(score);

                score = 0; // reset score to zero for the next test case 
        }
int评分=0;
System.out.println(“输入测试用例:”);
int testCase=Integer.parseInt(sc.nextLine());

对于(int i=1;i您在
T=sc.nextLine()之后错过了
sc.nextLine();
至少对我来说,你的解释令人困惑。也许你应该提供一个增强的示例。顺便说一句:注意Java命名约定。变量应该以小写开头character@Jens谢谢,我知道这是什么问题,但我不知道到底要搜索什么,所以我不得不去找她答复:)
        int score = 0;
        System.out.println("Enter test case:");
        int testCase= Integer.parseInt(sc.nextLine());

        for (int i = 1; i <= testCase; ++i)
        {
            System.out.println("Enter pattern:");
            String str = sc.nextLine();
                for (int j = 0; j < str.length(); j++)
                {
                    if (str.charAt(j) == '0')
                    {
                        score += 1;

                    }
                    else if (str.charAt(j) == 'X')
                    {
                        score += 0;
                    }
                }

                System.out.println(score);

                score = 0; // reset score to zero for the next test case 
        }