【问题标题】:Java Console Output Not Printing on The Next LineJava 控制台输出未在下一行打印
【发布时间】:2020-12-22 22:06:56
【问题描述】:

您好,我开始在 dmoj 链接这里做一些问题:https://dmoj.ca/problem/ccc03j2

我已经写好了代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int x = 0;
        int y = 0;
        boolean loop = true;
        StringBuilder result = new StringBuilder();
        while(loop){
            int pictures = Integer.parseInt(br.readLine());
            if(pictures == 0){
                break;
            }
            int max = (int) Math.ceil(Math.sqrt(pictures));
            int min = (int) Math.floor(Math.sqrt(pictures));
            if(pictures % max == 0){
                x = max;
                y = pictures / max;
            }
            else if(pictures % min == 0){
                x = min;
                y = pictures / min;
            }
            int perimeter = ((x+y) / 2) * 4;
            if(x < y){
                result.append("Minimum perimeter is " +  perimeter + " with dimensions " + x  + " x " + y);
            }else if(y < x){
                result.append("Minimum perimeter is " +  perimeter + " with dimensions " + y  + " x " + x);
            }else{
                result.append("Minimum perimeter is " +  perimeter + " with dimensions " + y  + " x " + x);
            }
            System.out.println(result);
            result.setLength(0);
        }
    }
}

但是当它打印到控制台时会导致:

100
15
195
0Minimum perimeter is 40 with dimensions 10 x 10 //Why is my output on the same line as my input?
Minimum perimeter is 16 with dimensions 3 x 5
Minimum perimeter is 56 with dimensions 13 x 15

请帮忙,我是初学者,我在基本输入输出方面遇到问题,谢谢!

【问题讨论】:

  • 这4个数字从何而来?您是否可能将它们粘贴,没有最后的行终止符,所以所有4 个数字都在控制台窗口中 Java 程序完成第一个br.readLine() 调用之前?然后程序就坐在那里等待第 4 行输入,所以当你按 Enter 之后 程序已经打印了 3 行输出,程序终于结束了吗?如果是这样,请确保在剪贴板中有最后一行终止符,如果您不希望控制台看起来像那样。或者手动输入数字,所以它会打印输出 as 输入。
  • 是的,谢谢,因为当我粘贴时,我没有在 0 下粘贴额外的行。我在 dmoj 判断中运行了代码,它说我完成了问题,但它让我接受了 40/ 100。你必须得到 100/100 才能完成,所以我真的很困惑。
  • wait nvm 我的代码是错的,哈哈

标签: java input io output


【解决方案1】:

我假设您正在复制/粘贴您的输入,否则它会如下所示:

100
Minimum perimeter is 40 with dimensions 10 x 10
15
Minimum perimeter is 16 with dimensions 3 x 5
195
Minimum perimeter is 56 with dimensions 13 x 15
0

Process finished with exit code 0

发生的情况是,由于您的程序在读取每一行后输出,一旦粘贴输入,它将开始处理,每行一个条目。
在 0 之后包含换行符,这将防止它们在同一行。

100
15
195
0
Minimum perimeter is 40 with dimensions 10 x 10
Minimum perimeter is 16 with dimensions 3 x 5
Minimum perimeter is 56 with dimensions 13 x 15

Process finished with exit code 0

【讨论】:

  • 是的,谢谢 broski,因为我没有在零之后输入额外的空格
  • 我如何实现一种方法,使他们不需要在零后输入新行
  • 哦,等等,我很困惑,因为当我将代码输入法官时,它显示的是 AC 40/100。我认为这是错误的答案,因为它不是 100/100,这是否意味着我的答案是正确的或否。我检查了我完成的问题,它包括了它,但不是 100/100
  • 因为不必按回车键(不确定这将如何与您的其他元素一起使用,但可能会使其混乱)How to read a single char from the console in Java (as the user types it)?
  • 没关系,我得到了法官 100/100 接受的代码。我得到 40/100 是因为我的逻辑是错误的,而不是因为我的输出。无论如何,非常感谢让我明白当我复制粘贴输入时我需要一个额外的输入空格键。还要感谢你没有因为我是菜鸟而烤我哈哈 :) 因为我的朋友告诉我,使用堆栈溢出来提问通常会得到有毒的反应。
猜你喜欢
  • 2011-02-23
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 2015-01-05
  • 2014-09-06
相关资源
最近更新 更多