java - 弗洛伊德三角的意外显示

标签 java stdin

import java.io.*;
import java.lang.*;
class sa
{
public static void main(String args[])
 {
int i,j,caunt=1, k,m=1;
System.out.flush();
try
{
 k=(int)System.in.read();
 while (caunt<=k)
  {
  for(i=m;i<=m;i++)
    {
  for(j=1;j<=i;j++)
   {
  System.out.print(caunt);
  ++caunt;
   }
  System.out.print ("\n");
    }
++m;
 }
}
catch(IOException e)
{
System.out.println(e);
}
 }
}

当我输入 10 它应该显示时,该程序旨在显示 ployd 三角形 喜欢

1
23
456
78910

但它正在显示

1
23
456
78910
,,,,,,
,,,,,,,
,,,,,,,,,
,,,,,,,,,,,,,,55

请帮帮我

最佳答案

我认为问题出在这一行:

k=(int)System.in.read();

问题是您读入的是一个字符,而不是您期望的数字。我会做以下而不是上面的行:

Scanner stdin = new Scanner(System.in);
k=stdin.nextInt();

我已经测试过了,这是有效的。

生成的代码如下所示:

int i, j, caunt = 1, k, m = 1;
System.out.flush();
Scanner stdin = new Scanner(System.in);
k = stdin.nextInt();
while (caunt <= k) {
    for (i = m; i <= m; i++) {
        for (j = 1; j <= i; j++) {
            System.out.print(caunt);
            ++caunt;
        }
        System.out.print("\n");
    }
    ++m;
}

关于java - 弗洛伊德三角的意外显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820490/

相关文章:

go - 如何从 STDIN 读取 “postpone”

Haskell:如何从标准输入中逐行读取值并将它们添加到 map 中?

java - Recyclerview 不在嵌套的 ScrollView 内滚动

Java:如何为 isos 的两侧创建一个条件。三角形但不相等。三角形

java - 如何在不使用缓冲区或追加方法的情况下追加?

c - 从标准输入读取文件

python - WIndows:创建新控制台窗口的子进程,丢失标准输入/输出

c# - 无法使用 PowerShell 通过管道传输控制台应用程序的无限输出

java - 启动 GridGain 节点

java - 在代码中更改 Android 设备名称