【学习日志】-题:MT1027~1028【有关逆序输出问题】

前言(问题引入)

要求:编写一个程序,要求输入一个两位数的数字,然后逆序输出数字。
不考虑不合理的输入或是溢出等特殊情况。
样例:
输入:28
输出:82
public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        //用代数方法:1.得到个位:28/10 = 2 2.得到十位:28%10*10 = 80 3.相加
        System.out.println(a / 10 + a % 10 * 10);

        input.close();
    }

运行之后,发现用代数方法存在一些问题:遇到整十数,会把取模后的零与个位数加上,得到一个个位数。 e.g.:输入: 20 ; 输出: 2


逆序输出的方法讨论归纳(解决办法)

方法一:遍历输出(相关:String转为char)每一位逆序输出

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
            String num = input.nextLine();
            for (int i = num.length() - 1; i >= 0; i--) {
                char number = num.charAt(i);
               System.out.print(number);
            } 
}

方法二:取模输出(每一位

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int num1 = input.nextInt();
        while (num1 != 0) {
            int a = num1 % 10;
            System.out.print(a);
            num1 = num1 / 10;
        }
            }

方法三:toCharArray()方法(得到每一位

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String num2 = input.nextLine();
        String number = "";
        char[] c = num.toCharArray();
           for (int i = c.length - 1; i >= 0; i--){
               number += c[i];
     }
           System.out.print(number);
            }

方法四:reverse方法

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String number = input.nextLine();
        System.out.print(reverse(number));
    }
    private static String reverse(String number){
            return new StringBuffer(number).reverse().toString();
    }

应用

类型相似

数字逆序输出

要求:将一个四位数正整数(如1278)逆序(如8721)输出。
不考虑负数等特殊情况。
样例:
输入:1234
输出:4321
public static void main(String[] args) {

      Scanner input = new Scanner(System.in);
      // code here
      String num = input.nextLine();
        for (int i = num.length() - 1; i >= 0; i--) {
            char number = num.charAt(i);
            System.out.print(number);
        }
      input.close();
   }

类型扩大

字符串类型,如中文、英文…逆序输出

要求:
输入: I am a student
输出: tneduts a ma I
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        for (int i = str.length()-1;i >= 0; i--) {
            System.out.print(str.charAt(i));
        }
    }

总结

总结:
代数相加后再输出在遇到整十数逆序输出,就会变成个位数输出,问题关注每一位逆序输出,
方法二(取模输出)不进行代数相加,每一次得到的一位数直接进行输出,再回去判断,可以解决问题。
还可以用遍历输出、toCharArray()方法和reverse方法进行逆序输出。
数字、中文、英文逆序输出都可以用类似办法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值