在字符串列表中取名字的第一个字母

时间:2017-02-20 06:33:35

标签: java string loops do-while

我正在进行一项任务,其中指出:

在编写迭代解决方案时,do while循环不应该是您的首选。作为一般规则,如果您可以使用while循环合理地解决问题,那么您应该这样做。话虽如此,我们没有理由不能一点点练习。

要求用户输入他们喜欢的名字列表。我们将只考虑这个练习中的一个单词名称。用户应该继续输入,直到输入“x”作为名称。使用do-while循环来获取所有名称。当循环退出时,输出一个字符串,其中包含每个逗号分隔的第一个首字母。

我遇到的问题是输出名字的第一个字母并结束do-while循环。这是我到目前为止的代码:

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    String name;
    String first = "";

    System.out.println("Please enter a list of name: ");
    name = in.nextLine();

    do {

           name.charAt(0);
           first = first += name.charAt(0);
           name = in.nextLine();

           if(first != "") {
                first = first + ",";
           }            
    } while(name != "x");

       System.out.println("The first intial if each name is " + name);
   }
}

3 个答案:

答案 0 :(得分:0)

你甚至试图在do while循环的第一行做什么?请记住,charAt()会返回一个值;在不将返回值赋给变量的情况下调用它会导致语法错误。使用while循环。在循环中取出第一个输入OUTSIDE。

System.out.println("Enter a name...end with 'x'");
String first=""; //don't forget to initialize
String name = in.nextLine(); //first name taken
while(!name.equalsIgnoreCase("x")){
    first+= name.charAt(0)+", ";
    System.out.println("Enter a name...end with 'x'");
    name = in.nextLine();
}
System.out.println(first);

答案 1 :(得分:0)

您应该将字符串与volatile进行比较,而不是与s1.equals(s2)进行比较,而不是:

==

使用

while(name != "x"); 

而不是:

while (!name.equals("x"));

使用

if(first != "") {

答案 2 :(得分:0)

您可以将列表用于下一个用法。

 public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    List<String> names = new ArrayList();//To store entered nemes.

    System.out.println("Enter the first name. (use char 'x' to to finish)");

    String name = in.nextLine();// Get the name for first time.
    while (!name.equalsIgnoreCase("x")) {
        names.add(name);// Add name to list.
        System.out.println("Enter next name. (use char 'x' to to finish)");
        name = in.nextLine();// Get the next names.
    }

    names.forEach((n) -> {// For each names get first character and print it.
        System.out.println("The first char of '" + n + "',  is: " + n.charAt(0));
    });

}  

输入名字。 (使用char'x'完成)
菊花
输入下一个名字。 (使用char'x'完成)
玫瑰
输入下一个名字。 (使用char'x'完成)

输入下一个名字。 (使用char'x'完成)
X
“黛西”的第一个字母是:D
“玫瑰”的第一个字母是:R
'Violet'的第一个字母是:V

建立成功

总时间:1:18.969s
完成于:2月20日星期一12:40:25 IRST 2017

最终记忆:8M / 155M