题目:

在解题之前我想先说明一下scanner.next()与scanner.nextLine()的区别:

scanner.next():读取“单词”(以空白分隔)。1:跳过输入开头的所有空白字符(空格、换行、制表符等)。2:从第一个非空白字符开始读取,直到遇到下一个空白字符为止,返回读取的字符串。3:不会处理换行符,如果输入最后是换行符,该换行符会留在输入缓冲区中。

scanner.nextLine():读取“整行”(以换行为分隔)。1:读取输入中从当前位置到换行符 \n 为止的所有字符(包括中间的空格、制表符)。2:读取完成后,会将换行符从输入缓冲区中移除(消耗换行符)。3:如果当前位置就是换行符(比如前一个方法留下了换行符),会直接返回空字符串。

由于该题中可能含有空格,所以我们应使用nextLine()方法。

解一:获取字符串,创建一个可变字符数组,将字符串的内容递给数组中,StringBuilder.reverse()方法是一个高效的原地反转字符序列的方法,然后调用该方法,反转字符串进行输出。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str=scan.nextLine();
        StringBuilder sb=new StringBuilder(str);
        System.out.print(sb.reverse());
        scan.close();
    }
}

解二:获取该字符串,调用toCharArray()方法将字符串转为字符数组,for循坏遍历字符数组,设立一个中间值temp来将min和max对应的字符进行调换。(这里想提醒:for循坏执行n/2时字符调换已经结束,如果执行n的话说明调换了两次又变回原来的顺序,导致出错。所以在这里min++和max--同时进行)。最后对数组进行遍历输出。代码有如下两种:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        char[] Arr= str.toCharArray();      
        for(int min = 0,max=Arr.length-1;min<=max;min++,max--){
          char temp=Arr[min];
          Arr[min]=Arr[max];
          Arr[max]=temp;
        }
        for(int i = 0; i<Arr.length;i++){
          System.out.print(Arr[i]);
        }  
        scan.close();
    }
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length / 2; i++) {
            char temp = arr[i];
            arr[i] = arr[arr.length -1 -i];
            arr[arr.length -1 -i] = temp;
        }
        System.out.print(new String(arr));
        scan.close();
    }
}

解三(自己的解法):获取字符串,创建一个可变字符数组,对字符串倒序遍历将各个字符追加到可变数组中(遍历时应注意对下标i的初始与结束判断)。最后打印输出。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Scanner scanner = new Scanner(System.in);//获取字符串
        String x = scanner.nextLine();
        StringBuilder sb = new StringBuilder();//创建一个可变字符数组
        for (int i = x.length()-1;i>=0;i--){//对字符串倒序遍历
            char a = x.charAt(i);//将i号下标字符追加到可变字符数组中
            sb.append(a);
        }
        System.out.println(sb);//输出
        scan.close();
    }
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐