从字符串中提取逗号分隔的值

我正在尝试从字符串下方打印逗号分隔值


A,B,C,D,E

这是我的代码


String Inp = "A,B,C,D,E";

StringBuilder op = new StringBuilder();

int Idx = 0;

int IdxUpto = 0;

for(;;){

  IdxUpto = Inp.indexOf(",", Idx);

  if(IdxUpto==-1){

    System.out.println("There is no more commas in String");

    op.append(Inp.substring(Idx, Inp.length()));

    System.out.println(op);

    break;

  }

  op.append(Inp.substring(Idx, IdxUpto));

  Idx = IdxUpto;

  System.out.println(op);

}   

对于循环在第一次提取后没有得到停止,任何人都可以帮助我做错了什么?


编辑:


预期输出


A

B

C

D

E

谢谢


慕妹3242003
浏览 121回答 3
3回答

慕码人8056858

下面是代码中令人反感的行:Idx = IdxUpto;您应该递增加一,以考虑到您还必须前进超过宽度为 1 的逗号分隔符。所以使用这个:Idx = IdxUpto + 1;但请注意,您还有其他几个问题。首先,您应该遵循Java约定,避免以大写字母开头的变量名称。此外,在这里使用循环可能比不使用指定条件的循环更有意义。考虑到所有这些因素,以下是脚本的工作版本:whileforString input = "A,B,C,D,E";StringBuilder op = new StringBuilder();int idx = 0;int idxUpto = 0;do {    idxUpto = input.indexOf(",", idx);    if (idxUpto == -1) {        String term = input.substring(idx, input.length());        op.append(term);        System.out.println(term);        System.out.println("There is no more commas in String");        break;    }    String term = input.substring(idx, idxUpto);    op.append(term);    idx = idxUpto+1;    System.out.println(term);} while(true);ABCDEThere is no more commas in String

汪汪一只猫

您可以简单地使用如下方法:String.split()public class StringSplit {  public static void main(String[] args) {    String input = "A,B,C,D,E";    String[] array = input.split(",");    for (String letter : array) {      System.out.println(letter);    }  }}输出:ABCDE

慕后森

字符串的 api 表示如下:indexof返回此字符串中第一次出现的指定子字符串的索引,从指定的索引开始。当您输入 for 条件时,索引为 1(找到第一个逗号的索引位置)。现在,您要做的是将Idx设置为此索引,如下所示:Idx = IdxUpto;现在,由于api的索引开始从该索引中搜索逗号,它一直说我在索引1处找到,并且您继续尝试在索引1处搜索逗号。要解决此问题,请尝试添加如下方法:Idx = IdxUpto + 1;需要注意的几件事:一个。使用驼峰大小写变量命名约定。(二)您正在追加到字符串生成器,如果您需要按预期的所需输出,则语句应更改为:printlnSystem.out.println(Inp.substring(Idx, IdxUpto));//mutate Idx assignment after this print statement.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java