你可以阅读,当我在我的代码中使用替换功能时,它打印出来: 嘿,我。 嘿,(姓名)。 当它只打印出嘿,(名字)。 我不明白为什么。这是代码:
/*
* 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+".");
}
}
}
答案 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+".");
}
// ....