Java:打印尾随空格

时间:2017-06-06 07:25:18

标签: java arrays string

我是Java的初学者并且正在编写一个代码,该代码首先要求用户输入整数总数,然后输入整数本身。示例输入是:

4
1 4 3 2

代码需要将第二个输入反转为以下内容:

2 3 4 1

我的解决方案如下:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int arr[] = new int[n];
    for(int arr_i=0; arr_i < n; arr_i++){
        arr[arr_i] = in.nextInt();
    }
    for(int reverse_i=n-1; reverse_i>=0; reverse_i--){
        System.out.print(arr[reverse_i]);
            if(reverse_i != 0){System.out.print(" ");}
    }
}

我的问题与在打印数字之间添加空格“”的代码有关。我想知道我可以用其他方式来完成这项工作?任何建议表示赞赏,谢谢。

3 个答案:

答案 0 :(得分:2)

反转字符串的简便方法是使用StringBuilder类:

一种选择是删除字符串末尾的空格,例如。删除最后一个字符

package stackoverflow.main;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        StringBuilder sb = new StringBuilder();

        for(int arr_i = 0; arr_i < n; arr_i++){
            sb.append(in.nextInt());
            sb.append(" ");
        }

        sb.deleteCharAt(sb.length() - 1);

        String normal = sb.toString();
        String reversed = sb.reverse().toString();

        System.out.println("normal: " + normal);
        System.out.println("reversed: " + reversed);
    }
}

另一种选择是检查您是否处于循环的最后arr_i。 如果是这样,那么就不要添加空格

package stackoverflow.main;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        StringBuilder sb = new StringBuilder();

        for(int arr_i = 0; arr_i < n; arr_i++){
            sb.append(in.nextInt());
            if (arr_i != 3
                sb.append(" ");
        }

        String normal = sb.toString();
        String reversed = sb.reverse().toString();

        System.out.println("normal: " + normal);
        System.out.println("reversed: " + reversed);
    }
}

答案 1 :(得分:0)

首先反转数组然后用for循环打印它。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int arr[] = new int[n];
        for(int arr_i=0; arr_i < n; arr_i++)
        {
            arr[arr_i] = in.nextInt();
        }
        for(int i = 0; i < arr.length / 2; i++)
        {
            int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;
        }    
        for(int i = 0; i < arr.length; i++)
        {
            System.out.print(arr[i]+" ");
        }
    }
}

答案 2 :(得分:-1)

关于输出格式化。您可以使用this examples并熟悉所有可能的方法。

您的代码可以通过以下两种方式进行改进:

1)使用\t代替空格(\t是制表符号)

2)使用类似private static final String output = "%d "的输出格式创建一个常量,并在输出行中使用它,如下所示:String.format(output, number)其中number是您应该打印的数字。