Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写一个程序,允许用户输入字符串,然后打印以逗号分隔的字符串字母_Java - Fatal编程技术网

Java 编写一个程序,允许用户输入字符串,然后打印以逗号分隔的字符串字母

Java 编写一个程序,允许用户输入字符串,然后打印以逗号分隔的字符串字母,java,Java,输出总是一个字符串,例如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.pr

输出总是一个字符串,例如
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);

    }
}
import java.util.Scanner;
导入java.lang.String;
公共类forLoop
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入字符串:”);
字符串Str1=Scan.next();
字符串newString=“”;
字符串Str2=“”;
对于(int i=0;i
由于这是家庭作业,我将帮助您解决一些问题,但不给出答案:


如果您希望输出仅在字母之间,即:A,B,C而不是A,B,C,这就是我想您正在询问的问题。然后,您需要查看for循环并检查边界条件。

只要在要附加循环的最后一项时不要附加逗号即可。您可以通过
i
获得项目索引,通过
Str2.length()
获得字符串长度。只需在
if
语句中使用小于或大于运算符进行小学数学运算。

尝试正则表达式:

String input = scanner.next();
String output = input.replaceAll(".", "$0,");
使用空格会更容易一些,因为您不需要放弃最后一个“奇数”逗号:

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

找到循环解决方案后,可以尝试以下方法;)


下面的代码片段应该很有指导意义。它表明:

  • 如何用于构建字符串
  • 如何使用显式索引处理
    字符串中的每个
    char
    • 如何检测它是否是特殊处理的第一次/最后一次迭代

String s=“你好”;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
我认为最简单的方法是:

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

尽管我强烈推荐学习@Roman建议的正则表达式。在那之前,这将起作用。:)

你到底想让它做什么?如果你不想丢分的话,尽量坚持。变量标识符应该以小写字母开头<代码>扫描
Str2
无效。此外,类名应该以大写字母开头
forLoop
无效。当然,使用标准命名约定是一种良好的做法,但您不一定会说海报会因为不遵守这些约定而在作业中失分。这完全取决于评分员和作业的规格。(我会称之为非常规的,不鼓励的,但不是无效的)如果我将循环更改为Str1.length()-1,,,它将给我A,B,不包括C…我的意思是检查在循环中使用if语句附加commaTry的条件。或者在退出循环时更改输出(你知道它总是以逗号结尾,所以…)我没说是的,否决票是因为增加了一层复杂性,而这在学习过程中是不需要的。如果答案不必要地复杂,更令人困惑,对提问者来说也没什么用处,那就不是迂腐了。我只能假设你们都不知道这个解决方案。无论如何,让它出现在这里只是为了一些风险请回答。@Roman:FWIW,OP第一次问这个问题时,我也给出了一个正则表达式解决方案,如果你在做
replaceAll
,最好不用
数组。toString/toCharArray
    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>"
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)