替换java给2个字符串

时间:2017-10-29 17:12:35

标签: java

你可以阅读,当我在我的代码中使用替换功能时,它打印出来: 嘿,我。 嘿,(姓名)。 当它只打印出嘿,(名字)。 我不明白为什么。这是代码:

 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package fiestaaburrida;

import java.util.Scanner;

/**
 *
 * @author xBaco
 */
public class FiestaAburrida {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner teclado = new Scanner(System.in);
        int times = teclado.nextInt();
        int index = 0;
        while (index < times){
            String greeting = teclado.next();
            String newgreeting = greeting.replace("I'm ","");
            System.out.println("Hey, "+newgreeting+".");
        }


    }

}

3 个答案:

答案 0 :(得分:0)

这是因为teclado.next();获取控制台中由空格分隔的下一个值。您想使用teclado.nextLine();。虽然这不是一个完整的解决方案。如果你跟进这种方法并输入“我是杰克”,那么程序会打印“嘿,”。其次是“嘿,杰克”。这是因为您使用的是teclado.nextInt();,但它不会导致Scanner#nextLine()立即读取“我是杰克”。因此,您还必须将nextInt();替换为nextLine();并解析它:

public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int times = Integer.parseInt(teclado.nextLine());
        int index = 0;
        while (index < times){
            String greeting = teclado.nextLine();
            String newgreeting = greeting.replace("I'm ","");
            System.out.println("Hey, " + newgreeting + ".");
        }
}

答案 1 :(得分:0)

Scanner.next()会将您的输入读取到下一个分隔符,默认情况下是一个空格。因此,您需要输入两个输入I'm Joe,而不是一个输入I'm Joe

如果您想一次接收整行,则应使用Scanner.nextLine()。 (虽然你应该留意this quirk因为你的第一个nextInt会对你产生影响。)

答案 2 :(得分:-2)

Java的String.replace方法找到一个字符串并替换一个字符串。 所以,我建议你使用String.replaceAll

    // ....
    while (index < times){
        String greeting = teclado.next();
        String newgreeting = greeting.replaceAll("I'm ","");
        System.out.println("Hey, "+newgreeting+".");
    }
    // ....