我创建了一个扫描仪类,我想将整数的用户输入转换成一个字符串,像 num1:num2:num3 这样打印出来
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
我希望能够做到,所以我可以使用字符串
System.out.println();
每次我想使用字符串时都不必做 num1 + ":" num2 + ":" + num3 。
你可以引入一个局部变量:
String myString = num1 + ":" num2 + ":" + num3;
然后就可以直接使用了:
System.out.println(myString);
此外,这可能是一种更方便的方式:
String myString = String.format("%d:%d:%d", num1, num2, num3);
String.format
使您能够指定格式字符串("%d:%d:%d"
这一次),因此如果您以后碰巧想更改它,您可以轻松地做到这一点。
正如@Pshemo 所指出的,类似于 String.format 的工作方式,有一种PrintStream.printf()
方法,在这种情况下可用System.out.printf(String format, Object... args)
:
System.out.printf("%d:%d:%d", num1, num2, num3);
要考虑的另一个方面:您是否会碰巧遇到需求变化(例如:不是 3 个,而是更多,甚至是任意数量的输入),您应该考虑使用数组(或适当集合的 anz:List 或 Set 实现)用于存储输入,并编写一个函数来提供所需的字符串。
在这种情况下,Apache CommonsStringUtils
可以派上用场:它有一个很好的多态连接方法,可以连接任何东西:
//given an int[] named myArray:
String myString = StringUtils.join(myArray, ':');
您可以使用StringBuilder
:
StringBuilder sb = new StringBuilder();
sb.append(num1);
sb.append(":");
sb.append(num2);
sb.append(":");
sb.append(num3);
System.out.println(sb.toString());
由于这些append
方法返回对同一对象的引用,因此可以链接这些调用:
StringBuilder sb = new StringBuilder();
sb.append(num1).append(":").append(num2).append(":").append(num3);
System.out.println(sb.toString());
各种重载append
方法使您能够将其他几种类型附加到StringBuilder
.
像以前一样获取字符串并将其存储在字符串中:
String numbers = num1 + ":" + num2 + ":" + num3;
然后打印它:
System.out.println(numbers);
Guava来自 Google的 Guava 可以帮助您。除其他外,它还有这个不错的实用程序类。
public void concatenate() {
// Your user input, which could be maybe optimised as well
int int1 = 10;
int int2 = 20;
int int3 = 30;
int int4 = 40;
System.out.println(
Joiner.on(":") // delimiter that will be used
.join(ImmutableSet.of(int1, int2, int3, int4))); // Guava which creates temp list for you
}
结果:
10:20:30:40