Напишите программу, которая позволяет пользователю вводить строку, а затем печатать буквы строки, разделенные запятой. - PullRequest
0 голосов
/ 03 мая 2010

Выводом всегда является строка, например H,E,L,L,O,. Как я могу ограничить запятые? Я хочу запятые только между буквами, например H,E,L,L,O.

import java.util.Scanner;

import java.lang.String;

public class forLoop 

{
    public static void main(String[] args)
    {
        Scanner Scan = new Scanner(System.in);

        System.out.print("Enter a string: ");
        String Str1 = Scan.next();

       String newString="";
       String Str2 ="";
        for (int i=0; i < Str1.length(); i++)
        {
                newString = Str1.charAt(i) + ",";

                Str2 = Str2 + newString;  

        }
       System.out.print(Str2);

    }
}

Ответы [ 6 ]

2 голосов
/ 03 мая 2010

Поскольку это домашнее задание, я немного помогу вам, не дав ответа:

Если вы хотите, чтобы вывод был только между буквами IE: A, B, C вместо A, B, Cо чем я думаю, вы спрашиваете.Затем вам нужно взглянуть на цикл for и проверить граничные условия.

0 голосов
/ 19 декабря 2010

Самый простой способ увидеть это:

public static void main(String[] args) {
    Scanner Scan = new Scanner(System.in);

    System.out.print("Enter a string: ");
    String Str1 = Scan.nextLine();

   String newString="";
   String Str2 ="";
    for (int i=0; i < Str1.length()-1; i++)
    {
            newString = Str1.charAt(i) + ",";

            Str2 = Str2 + newString;

    }
   Str2 = Str2 + Str1.charAt(Str1.length()-1);
   System.out.println(Str2);
}

Вывод будет:

run:
Enter a string: Hello world
H,e,l,l,o, ,w,o,r,l,d
BUILD SUCCESSFUL (total time: 5 seconds)

Хотя я очень рекомендую изучать регулярные выражения, как предложено @Roman. До тех пор это будет делать свое дело. :)

0 голосов
/ 03 мая 2010

Следующий фрагмент должен быть поучительным. Показывает:

  • Как использовать StringBuilder для построения строк
  • Как обработать каждый char в String с использованием явного индекса
    • Как определить, является ли это первая / последняя итерация для специальной обработки

    String s = "HELLO";
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if (i == 0) { // first
            sb.append("(" + ch + ")");
        } else if (i == s.length() - 1) { // last
            sb.append("<" + ch + ">");
        } else { // everything in between
            sb.append(Character.toLowerCase(ch));
        }
    }
    System.out.println(sb.toString());
    // prints "(H)ell<O>"
0 голосов
/ 03 мая 2010

Когда вы разобрались с циклическим решением, вы можете попробовать следующее;)

System.out.println(Arrays.toString("HELLO".toCharArray()).replaceAll("[\\[ \\]]", ""));
0 голосов
/ 03 мая 2010

Попробуйте регулярные выражения:

String input = scanner.next();
String output = input.replaceAll(".", "$0,");

С пробелами было бы немного проще, так как вам не нужно оставлять последнюю 'нечетную' запятую:

output = output.substring (0, ouput.length() - 2);
0 голосов
/ 03 мая 2010

Только не добавляйте запятую, когда последний элемент цикла должен быть добавлен. У вас есть индекс предмета на i и длина строки на Str2.length(). Просто сделайте в начальной школе математику с оператором «меньше» или «больше» в выражении if.

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