Java:计算空白和制表符

Java:计算空白和制表符,java,string,if-statement,while-loop,whitespace,Java,String,If Statement,While Loop,Whitespace,我很难准确地理解如何让Java吐出用户输入字符串中的空白和制表符。我使用的是isWhiteSpace,它只计算字符串中的字符数 我非常感谢你的帮助 多谢各位 我的代码: import java.util.Scanner; public class CharsInLine { public static void main(String[] args) { Scanner console = new Scanner(System.in); i

我很难准确地理解如何让Java吐出用户输入字符串中的空白和制表符。我使用的是isWhiteSpace,它只计算字符串中的字符数

我非常感谢你的帮助

多谢各位

我的代码:

import java.util.Scanner;

public class CharsInLine 
{
    public static void main(String[] args) 
    {
        Scanner console = new Scanner(System.in);

        int numberUpperCase = 0;
        int numberLowerCase = 0;
        int numberWhiteSpace = 0;

        System.out.print("Enter a line of text : ");
        String inLine = console.nextLine();
        int i = 0;

        while ( i < inLine.length() ) {

            char currentCharacter = inLine.charAt(i);

            if ( Character.isUpperCase(currentCharacter) ) {
                numberUpperCase++; }
            if ( Character.isLowerCase(currentCharacter) ) {
                numberLowerCase++; }
            if( Character.isWhitespace(currentCharacter) ); {
              numberWhiteSpace++; }

            i++;

        }

        System.out.println("There are " + numberUpperCase + " upper case characters, " + numberLowerCase + " lower case characters, and " + numberWhiteSpace + " white space characters.");

        console.close(); }
}
import java.util.Scanner;
公共类CharsInLine
{
公共静态void main(字符串[]args)
{
扫描仪控制台=新扫描仪(System.in);
int numberUpperCase=0;
int numberLowerCase=0;
int numberWhiteSpace=0;
System.out.print(“输入一行文本:”);
字符串inLine=console.nextLine();
int i=0;
而(i
您的问题在于:

 if( Character.isWhitespace(currentCharacter) ); 
那条线上的尾随“;”杀死你的if

换句话说,您的代码实际上是这样做的:

 if( Character.isWhitespace(currentCharacter) ) {
   ; 
 }
 {
    ... counter increase
 }
每次循环迭代,计数器都会增加。因此,最终输入的字符数是准确的

您的问题在于:

 if( Character.isWhitespace(currentCharacter) ); 
那条线上的尾随“;”杀死你的if

换句话说,您的代码实际上是这样做的:

 if( Character.isWhitespace(currentCharacter) ) {
   ; 
 }
 {
    ... counter increase
 }

每次循环迭代,计数器都会增加。因此,最终输入的字符数是准确的

这里有一个额外的分号:if(Character.isWhitespace(currentCharacter));有时,最简单的事情被证明是最难的…我看了一遍,甚至没看懂。使用自动缩进将使这类问题变得显而易见。这里有一个额外的分号:if(Character.isWhitespace(currentCharacter));有时候,最简单的事情被证明是最难的…我看了一遍,甚至都没看懂。使用自动缩进将使这类问题变得显而易见。