0

我创建了一个扫描仪类,我想将整数的用户输入转换成一个字符串,像 num1:num2:num3 这样打印出来

int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();

我希望能够做到,所以我可以使用字符串

System.out.println();

每次我想使用字符串时都不必做 num1 + ":" num2 + ":" + num3 。

4

4 回答 4

7

你可以引入一个局部变量:

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, ':');
于 2013-09-23T22:12:25.207 回答
4

您可以使用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.

于 2013-09-23T22:12:16.453 回答
0

像以前一样获取字符串并将其存储在字符串中:

String numbers = num1 + ":" + num2 + ":" + num3;

然后打印它:

System.out.println(numbers);
于 2013-09-23T22:15:16.710 回答
0

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
于 2013-09-23T22:26:01.520 回答