Как вывести последовательность '1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0...' на Java?[закрыто]

StackOverflow https://stackoverflow.com/questions/489927

  •  20-08-2019
  •  | 
  •  

Вопрос

В настоящее время я начинаю программировать на Java.Я попытался закодировать последовательность в названии в качестве выходных данных на Java, но я застрял!Я экспериментирую с функцией for, любая помощь приветствуется ;)

Это было полезно?

Решение

System.out.println("1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0");

Но серьезно, ребята, это непроверенный первый проход:

for(int i=1; i<100; i++){
    System.out.print("1 ");
    for(int j=0; j<i; j++){
        System.out.print("0 ");
    }
}

Если вы ищете основную информацию о том, как начать работу, Google - ваш друг.Например, попробуйте поискать в Google "for loop java", и вы получите много хороших примеров.Кроме того, чтобы выучить базовые вещи на любом языке, воспользуйтесь поиском в Google по запросу "<language> привет, мир" - это очень надежный способ.

Другие советы

Почему две петли?

(преобразовано с C #, прошу прощения за любые синтаксические ошибки)

String s = "1 ";
for (int i = 0; i < 5; ++i)
{
  s = s + "0 ";
  System.out.print(s);
}

Самокритика:

  • два цикла for (например, решение Майкла Харена) сведут на нет копирование строки
  • StringBuffer / StringBuilder отрицал бы копирование строки

Вы могли бы сохранить число 10 в переменной, затем в цикле вывести число, умножить его на 10 (что добавляет ноль к его десятичному представлению) и повторить.

for (int i = 2; i < 64; i <<= 1)
    //System.out.print(Integer.toString(i, 2));
    System.out.print(Integer.toString(i, 2).replaceAll("[01]", "$0 "));

На самом деле это вопрос не fors, а скорее очень элементарного алгоритмического мышления.У вас есть последовательность, которая состоит из "1", а затем чего-то еще, что растет с течением времени", еще "1", еще чего-то и т.д.Вы можете думать о них как о двух разных сериях, которые чередуются.

Следовательно, общая структура была бы чем-то вроде:

while(... infinity?)
{
   System.out.print("1");
   doSomething(); 
}

Теперь что-то явно коррелирует с количеством итераций ("этапов") внешнего цикла или количеством, равным 1, поэтому вам нужно что-то вроде:

int stage=0;
while(...infinity?)
{
   ++stage;
   System.out.print("1");
   for(int i=0; i<stage; ++i) System.out.print("0");
}

Если вы знаете, сколько циклов вам нужно пройти, используйте цикл for вместо while и увеличьте stage через него.

Или тебя об этом попросил твой учитель?Два вложенных цикла for сделают свое дело.

Или другим способом на другом языке (Ruby):

4.times {|n| print 10**(n+1)}
for (int i = 1; i < 100000;)
{
    i = i * 10;
    System.out.print(i);              
}

или

int i = 1;

while (i < 100000)
{
    i = i * 10;
    System.out.print(i);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top