Member 13724614 Ответов: 2

Как напечатать 3 или более алфавитов в строке


если n=4, то выход должен быть MNOM

Я не понимаю логики того, как печатать O здесь, потому что здесь есть 3 алфавита. В 2 алфавитах я могу использовать четную и нечетную логику, но что мне здесь делать?Пожалуйста, помогите мне

Что я уже пробовал:

class Main {
  public static void main(String[] args) {
    int n=8;
    String str="";
    
    for(int i=1;i<=n;i++)
    {
      if(i%2!=0)
      {
        str=str+"M";
      }
      else
      {
        str=str+"N";
      }
      System.out.println(str);
      
    }
  }
}

Member 13724614

решить ее. конченая оптимизация!!!!

2 Ответов

Рейтинг:
2

CPallini

Ваш код можно легко обобщить. Попробуйте, например

class Main
{
  public static String build(int letters, int length)
  {
    StringBuilder sb = new StringBuilder();
    for (int n=0; n<length; ++n)
    {
      sb.append((char)('M'+ n % letters));
    }
    return sb.toString();
  }

  public static void main( String args[])
  {
    String msg1 = build(2, 4);
    String msg2 = build(3, 4);
    System.out.printf("msg1 '%s', msg2 '%s'\n", msg1, msg2);
  }
}


Member 13724614

Сэр, я новичок и очень новичок на Яве. Я ценю ваши усилия, но этот код, который вы написали, Я не смог получить. Пожалуйста, заставьте меня понять это, я буду вам очень благодарен.

CPallini

Вы используете результат (i % 2), то есть либо 0, либо 1, чтобы различать "M" и "N". Поскольку код символа "N" равен коду символа "M" плюс один, то
'M' + (i % 2)
заменяет ваши условные операторы.
Это можно было бы легко обобщить на
'M' + (i % 3)
'M' + (i % 4)
...

Рейтинг:
19

Member 13724614

class Main {
  public static void main(String[] args) {
    int n=8;
    String str="";
    
    for(int i=1;i<=n;i++)
    {
      if(i%3==1)
      {
        str=str+"M";
      }
      if(i%3==2)
      {
        str=str+"N";
      }
      if(i%3==0)
      {
        str=str+"O";
      }
    }
      System.out.println(str);
    
  }
}