неожиданное отображение в треугольнике Флойда - PullRequest
2 голосов
/ 27 января 2011
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, она должна отображать как

1
23
456
78910

но он показывает

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

пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 27 января 2011

Я думаю, что проблема в этой строке:

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;
}
0 голосов
/ 27 января 2011

read () читает только один байт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...