Member 13345886 Ответов: 1

Как сделать программу, описанную в описании?


Напишите java-программу для ввода строки и распечатайте новую строку после преобразования каждой альтернативной Буквы в верхний регистр и следующей непосредственной в Нижний.
пример ввода: мне нравится JAVA
пример вывода: мне нравится jAvA

[edit]добавлен блок кода-OriginalGriff [/edit]

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

import java.util.*;
public class alternates
{
  public static void main(String args[])
  {
      Scanner in=new Scanner(System.in);
      String s,str="",sp,m="";
      int i,l;
      char c,cha=' ',ch=' ',k=' ';
      System.out.println("Enter a string");
      s=in.nextLine();
      sp=s.trim();
     sp=sp.replace(" ","");
      l=sp.length();
      for(i=0;i<l;i++)
      {
                ch=s.charAt(i);
c=sp.charAt(i);
{
if(i%2==0)
c=Character.toUpperCase(c);
else
c=Character.toLowerCase(c);
}
if(ch!=' ')
str=str+c;
else
str=str+" "+c;
}
System.out.println(str);
}
}

OriginalGriff

Начните с правильного отступа кода, чтобы он был действительно читабельным ...
Затем расскажите нам, в чем проблема с этим кодом и что вы сделали, чтобы получить эту проблему.
Какая помощь вам нужна?

Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

1 Ответов

Рейтинг:
1

CPallini

Я полагаю, что было бы лучше избежать всего этого .обрезка и замена заготовок' материал.
Счетчика писем было бы вполне достаточно.
Более того, я бы использовал класс StringBuilder вместо оператора конкатенации строк. Что-то вроде:

import java.util.*;
public class alternates
{
  public static void main(String args[])
  {
    Scanner in = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    String src;
    System.out.println("Enter a string");
    src = in.nextLine();

    for (int n = 0, l=0; n < src.length(); ++n)
    {
      char c = src.charAt(n);
      if ( Character.isLetter(c) )
      {
        if ( l % 2 == 0)
          sb.append(Character.toUpperCase(c));
        else
          sb.append(Character.toLowerCase(c));
        ++l; // l counts just letters 
      }
      else
        sb.append(c);
    }
    System.out.println(sb.toString());
  }
}