java - 为什么我的代码首先打印一个空行?

标签 java

我有一个程序,它从文本文件中获取输入并显示此 1

public static void main(String args[])
{

    Scanner scan = new Scanner(System.in);
    int numLabels = 0;
    if(scan.hasNextInt())
    {
        numLabels = scan.nextInt();
        scan.nextLine();
    }
    else
    {
        System.out.println("Error! Invalid input.");
        System.exit(0);
    }

    String[] label = new String[numLabels];
    int[] data = new int[numLabels];

    for(int i=0; i<numLabels*2; i++)
    {
        if (i<numLabels)
        {
            label[i] = scan.nextLine();
        }
        if (i >= numLabels)
        {
            if(scan.hasNextInt())
            {
                data[i-numLabels] = scan.nextInt();     
            }
            else
            {
                System.out.print("Error! Invalid input.");
                System.exit(0);
            }
        }
    }   

    for(int i=0; i<numLabels; i++)
    {

        int width = 0;
        for(int j=0; j<label.length; j++)       
        {       
            if(width<label[j].length()) width=label[j].length();
        }

        String a = "";

        for(int j=0; j<data[i]; j++)
        {
            a = a + "*";
            if(j==(data[i]-1)) System.out.println();
        }
        System.out.printf("%" + width + "s  %s", label[i], a);
    }
}

它正在做我想做的事情,但是开头有一个空行。这是很小的问题,但我想知道它为什么会出现,以便立即修复它并供将来引用。

最佳答案

这是因为这里的这一行:

if(j==(data[i]-1)) System.out.println();

此外,通过将新行放入循环内,我认为当您尝试绘制计数为 0 的内容时,它实际上会产生错误的结果。

如果您想删除它,请在条形图的每一行之后打印换行符:

String a = "";

for(int j=0; j<data[i]; j++)
{
    a = a + "*";
}
System.out.printf("%" + width + "s  %s\n", label[i], a);

关于java - 为什么我的代码首先打印一个空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439329/

相关文章:

java - 在 java 中填充值后,Excel 下载无法正常工作

java - java中字节数组转换为字符串以及字符串转换为字节数组

java - 使用 Java Files.copy 复制后出现空白页的 PDF 文件

java - 无法解析相应的 jni 函数

java - 在 Java 中创建有序队列的有效方法,其迭代器重复回到开头

java - 如何为 vscode 终端定义命令/变量?

java - 在 Java 中通过 SHA-256 哈希字符串

java - 错误 : Could not find org. jetbrains.kotlin:kotlin-stdlib-jdk8

java - 解析xml kotlin android

java - 配置 Hazelcast CPSubsystem 重试超时