Как вывести последовательность '1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0...' на Java?[закрыто]
Вопрос
В настоящее время я начинаю программировать на 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);
}