开发者

Write a program that allows the user to enter a string and then prints the letters of the String separated by comma

The output is always a String, for example H,E,L,L,O,. How could I limit the commas? I want the commas only between letters, for example H,E,L,L,O.

import java.util.Scanner;

import java.lang.String;

public class forLoop开发者_Python百科 

{
    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);

    }
}


Since this is homework I'll help you out a little without giving the answer:

If you want the output to only be inbetween letters IE: A,B,C instead of A,B,C, which is what I imagine you are asking about. Then you need to look at your for loop and check the boundary conditions.


The easiest way I see is :

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);
}

The output it will give is :

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

Though I will highly recommend learning regular expression as suggested by @Roman. Till then this will do the trick. :)


Try regular expressions:

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

With spaces it would be a bit easier since you don't need to abandon last 'odd' comma:

output = output.substring (0, ouput.length() - 2);


When you've figured out the loop-solution, you could try the following ;)

System.out.println(Arrays.toString("HELLO".toCharArray()).replaceAll("[\\[ \\]]", ""));


Just don't append the comma when the last item of the loop is to be appended. You have the item index by i and the string length by Str2.length(). Just do the primary school math with a lesser-than or a greater-than operator in an if statement.


The following snippet should be instructive. It shows:

  • How to use StringBuilder for building strings
  • How to process each char in a String using an explicit index
    • How to detect if it's the first/last iteration for special processing

    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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜