Java 如何从用户处获取StringBuilder
如何通过Java 如何从用户处获取StringBuilder,java,Java,如何通过Scanner类从用户处获取StringBuilder?? 或者其他课程? 我知道我们可以得到一个字符串,然后将其放入StringBuilder中,如下所示: import java.util.Scanner; public class Sade { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str;
Scanner
类从用户处获取StringBuilder
??
或者其他课程?
我知道我们可以得到一个字符串,然后将其放入StringBuilder
中,如下所示:
import java.util.Scanner;
public class Sade {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str;
str = scan.nextLine();
StringBuilder strb = new StringBuilder(str);
}
}
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String text=null;
while ((text = scan.nextLine ()) != null)
{
sb.append(text);
}
或者通过使用append()
。
但是,是否可以直接从用户处获取
StringBuilder
。您无法从标准输入中获取StringBuilder
对象,但您可以向用户输出输入字符串(键入“exit”退出):
并制定自己的规则
循环执行此操作,直到他们键入“exit”,每次获取字符串时,您都可以执行myStringBuilder.add(theirInput)
(这当然是伪代码)您误解了
StringBuilder
的目的。字符串连接需要创建新的字符串
,这会导致不必要的垃圾收集StringBuilder
通过将多个字符串的内容放入字符缓冲区,然后一次返回一个新字符串,将其追加到一起。这会导致大量垃圾收集:
while ( (line = scanner.nextLine()) != null)
dataSoFar += line;
每次迭代都会导致dataSoFar
引用的旧字符串对象与line
连接成一个新的String
StringBuilder
仅读取行
,并将其字符放在内部缓冲区的末尾。当需要时,它将调整缓冲区的大小,这在读取大型字符数据源时需要更少的GC工作
Java的API不会返回字符串生成器,因为它在这里毫无意义。您误解了StringBuilder类。StringBuilder的主要操作是append和insert方法,这些方法重载以接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符追加或插入到字符串生成器中。append方法总是在生成器的末尾添加这些字符;insert方法在指定点添加字符。 使用代码可以做的最好的事情是:-
import java.util.Scanner;
public class sb {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
StringBuilder strb = new StringBuilder(scan.nextLine());
strb.append( scan.nextLine());
System.out.println(strb);
}
}
当然,它和你贴的一样 如果您希望将用户输入的所有行读取到StringBuilder中,可以通过以下方式完成:
import java.util.Scanner;
public class Sade {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str;
str = scan.nextLine();
StringBuilder strb = new StringBuilder(str);
}
}
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String text=null;
while ((text = scan.nextLine ()) != null)
{
sb.append(text);
}
否,用户只能向您传递字符串。它不能通过StringBuilder。为什么要使用StringBuilder?如果您对字符串使用
+
,它将在编译时转换为StringBuilder。请用户从易趣购买StringBuilder对象,并在System.in:))System.in中提供给您。in是一个输入流,StringBuilder是一个用于保存和连接字符串的对象。如果您开始搜索3个类并搜索键盘上的“自动生成源代码”键,您将无法成功完成任务。看看代码片段:5-15行,快速java课程:1-2周。否则,您需要询问每一行代码如何组合,因为StringBuilder更具动态性。它有一些方法(如insert)使其比字符串更具动态性。