Java判断回文(正序与反序一样)

2023-05-16

用户输入一串字符串,Java程序实现对该字符串判断。

对回文判断主要分为三种:1、纯数字  2、纯字母  3、混合型

1、纯数字

将输入的字符串翻转,之后分别转换成int形式,比较两个整数大小,大小相同则为回文。

2、纯字母

则是第一个字母和最后一个字母比较,前段往后推,后端往前推。

3、混合型

混合型考虑是否保留其中的标点符号,如果不保存,则只对字母数字进行比较。

import java.util.Scanner;
public class PalindromeTester {
    //---------------------------------------------
    //Tests strings to see if they are palindromes.
    //---------------------------------------------
    public static void main(String[] args){
        String str,str2, another = "y", type = "3",lose = "n";
        int left,right,a,b,c;

        Scanner scan = new Scanner (System.in);
        while(another.equalsIgnoreCase("y")){//allow y or Y
            System.out.println("Please enter a string type(1/2/3):1.Digital  2.Letter  3.Mixture");
            type = scan.nextLine();
            a = Integer.parseInt(type);

            System.out.println("Enter a potential palindrome:");
            str = scan.nextLine();
            left = 0;
            right = str.length() - 1;

            switch (a){
                case 1:
                    str2 = new StringBuffer(str).reverse().toString();
                    b = Integer.parseInt(str);
                    c = Integer.parseInt(str2);
                    if(b == c)
                        System.out.println("That string IS a palindrome.");
                    else
                        System.out.println("That string is NOT a palindrome.");
                    break;
                case 2:
                    while (str.charAt(left) == str.charAt(right) && left < right){
                        left++;
                        right--;
                    }
                    System.out.println();
                    if(left < right)
                        System.out.println("That string is NOT a palindrome.");
                    else
                        System.out.println("That string IS a palindrome.");
                    break;
                case 3:
                    System.out.println("Only alphanumeric letters are retained(y/n)?");
                    lose = scan.nextLine();
                    while (lose.equalsIgnoreCase("n")){
                        while (str.charAt(left) == str.charAt(right) && left < right){
                            left++;
                            right--;
                        }
                        System.out.println();
                        if(left < right)
                            System.out.println("That string is NOT a palindrome.");
                        else
                            System.out.println("That string IS a palindrome.");
                        break;
                    }
                    while (lose.equalsIgnoreCase("y")){
                        str = str.replaceAll("[^0-9a-zA-z]","");
                        left = 0;
                        right = str.length() - 1;
                        while (str.charAt(left) == str.charAt(right) && left < right){
                            left++;
                            right--;
                        }
                        System.out.println();
                        if(left < right)
                            System.out.println("That string is NOT a palindrome.");
                        else
                            System.out.println("That string IS a palindrome.");
                        break;
                    }
                    break;
            }

            System.out.println();
            System.out.println("Test another palimdrome(y/n)?");
            another = scan.nextLine();
        }
    }
}

初次发文,如有更好建议,欢迎一起探讨。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java判断回文(正序与反序一样) 的相关文章

  • 电脑没声音,喇叭上一个叉,显示无法找到输入输出设备(录制,耳机等等)

    项目场景 xff1a 驱动精灵也下载了 xff0c 声音驱动也重新安装了 依旧没有用 在驱动精灵里系统修复也无法检测到音频设备 问题描述 存在问题 xff1a win10更新后 xff0c 部分电脑右下角的小喇叭显示 未检测到任何音频输出设
  • Ubuntu连接FileZilla完整方法,并且解决报错:vsftpd 530 login incorrect

    Ubuntu连接FileZilla完整方法 xff0c 并且解决报错 xff1a vsftpd 530 login incorrect 1 安装 FTP 服务 sudo apt get install vsftpd 2 开启FTP服务 xf
  • 进来教你如何解决端口被占用问题

    文章目录 关闭windows中被占用的端口 xff0c 比如我们常见的8080端口被占用了 xff0c 只需两步轻松解决问题 一 xff1a 查找端口的PID xff08 以下内容以8080端口被占用为例 xff09 二 xff1a 关闭P
  • Echarts日历组件特性分析、自定义区域颜色

    在项目中需要使用到日历分析显示数据 xff0c 官网的案例是这样的 xff1a 需求 xff1a 根据每日的数据显示自定义的颜色 查询官方API xff0c 通过设置属性 visualMap pieces 和 visualMap inRan
  • 黑盒测试用例设计方法

    文章目录 黑盒测试用例设计 xff1a 一 等价类划分法 xff08 重点 xff09 1 原理2 明确等价类划分法的原则 xff08 6条 xff09 注意事项 3 实例 x1f330 xff1a 二 边界值分析法 xff08 重点 xf
  • HTTP协议解析

    文章目录 一 HTTP协议基础1 定义2 工作原理3 特点4 与Https的区别 x1f435 HTTPS简介 xff1a 两者区别 xff1a 二 HTTP请求协议1 HTTP请求结构 xff1a 2 请求方法3 举例4 Post和Get
  • Python基础知识梳理

    目录 一 Python语言编程特征 二 基本数据类型 xff08 5个 xff09 变量 xff1a 常量 类型转换问题 三 输入 输出函数 四 运算符 1 算法运算符 2 逻辑运算符 3 成员运算符 五 随机值获取 重命名 1 获取随机值
  • 排序算法——插入排序

    目录 x1f3a8 基本介绍 x1f3b9 算法思想 x1f3f8 实例 x1f3a0 思路分析 x1fa81 代码实现 x1f6f9 算法性能分析 x1f680 时间复杂度 x1f6f4 空间复杂度 x1f6f8 稳定性 x1f3a8 基
  • 排序算法——希尔排序

    目录 x1f6f4 基本介绍 算法思想 x1f6f9 实例 思路分析 代码实现 x1f6f5 算法性能分析 x1f6f4 基本介绍 希尔排序也是一种插入排序 xff0c 它是简单插入排序经过改进之后的一个更高效的版本 xff0c 也称为见效
  • 旋转矩阵与欧拉角

    其他相关的内容网上很多 xff0c 这里就简单记录一下不同欧拉角分解顺序时 xff0c 对应的角度怎么计算 include lt opencv2 opencv hpp gt include lt iostream gt using name
  • Java中数组的5种拷贝方法

    目录 1 for循环 示例代码 2 调用clone xff08 xff09 方法 示例代码 3 Arrays类中的Arrays copyOf xff08 xff09 方法 示例代码 4 copyOfRange xff08 xff09 方法
  • MySQL 表中数据的增删改查操作

    文章目录 一 在表中插入数据 xff08 1 xff09 单条数据插入 xff08 2 xff09 插入多条数据 二 删除表中数据 三 修改表中数据 四 查询表中的数据 xff08 单表查询 xff09 1 去重查询 distinct 2
  • MySQL中多表查询、表连接(内连接和外连接)

    文章目录 表与表的关系 一对一关系 一对多关系 多对多关系 表与表之间的连接 笛卡尔积 什么是笛卡尔积 xff1a 内连接 xff1a 1 通过where关键字进行关联 2 通过inner join on进行关联 外连接 xff1a 1 左
  • MySQL中索引与事务内容总结

    文章目录 x1f440 1 一 索引介绍 1 索引的优缺点 二 索引分类 三 索引的创建与删除 1 在创建表时创建索引 2 在已经存在的表上创建索引 第一种 xff1a 通过create语法创建索引 第二种 xff1a 通过alter语法创
  • Linux Ubuntu 命令行文件系统的创建,挂载,卸载

    我在刚开始操作的时候找不到 dev sdb 即使插入了U盘 xff0c 也没出现 经过翻阅网站 xff0c 才知道要创建新的硬盘 xff08 xff09 其余默认就行 文件系统的创建 1 查看新增硬盘的信息 sudo fdisk l 2 文
  • 408-数据结构-栈应用-括号匹配&表达式求值

    括号匹配 代码中的括号通常符合一下特性 xff1a 括号成对存在左右括号通常类型匹配 xff0c 大括号匹配大括号 如果存在括号序列 xff08 xff08 xff08 xff08 xff09 xff09 xff09 xff08 xff09
  • C语言学习笔记——编写求x的n次方的递归函数,在主函数调用并输出

    题目内容 xff1a 编写求x的n次方的递归函数 xff0c 在主函数调用并输出 x为double型 xff0c n为整型 xff0c 函数类型为double型 xff09 输入格式 lf d 输出格式 xff1a f 输入样例 xff1a
  • Python 输出Print( )函数用法

    目录 print 字符串格式化 格式化符号 format格式化函数 f string print objects sep 61 39 39 end 61 39 n 39 file 61 sys stdout flush 61 False o
  • RVIZ中的fixed frame选项以及“For frame [XX]: Fixed Frame [map] does not exist”

    RVIZ 使用的时候如果fixed frame选项设置不正确 xff0c 那么就会无法显示显示相应的数据信息 xff0c 并提示一下错误 xff1a For frame XX Fixed Frame map does not exist t
  • vim/vi 4种替换方法,批量替换,手动替换

    文件内全部替换 xff1a s abc 123 g 注 xff1a 把abc替换成123 如文件内有 xff0c 可用 替换 s abc 123 g 或者 s str1 str2 g 用str2替换文件中所有的str1 xff09 文件内局

随机推荐

  • C++枚举与字符串之间的转换

    template lt typename EnumType gt struct SEnumName static const char List enum ProgLang e cpp e java e csharp const char
  • kubeadm部署k8s集群

    1 准备环境 虚拟机操作系统 Centos7 角色 IP Master 192 168 150 140 Node1 192 168 150 141 Node2 192 168 150 142 2 系统初始化工作 在三台虚拟机上进行如下操作
  • docker部署redis集群+集群扩缩容

    1 集群规划 3主3从 xff1a nameipportredis node 1192 168 150 1106381redis node 2192 168 150 1106382redis node 3192 168 150 110638
  • ceph-deploy部署指定版本ceph集群

    注意 xff1a 16版本的ceph已经不支持ceph deploy xff0c 安装方法见我的博客 xff1a cephadm快速部署指定版本ceph集群 ggrong0213的博客 CSDN博客 1 集群规划 xff1a 主机名IP组件
  • k8s集群部署Java(springboot)项目

    1 java项目打成jar包 1 1 在IDEA开发工具中使用maven工具将开发完成的SpringBoot项目达成jar包 我自己的项目生成的jar为 xff1a demojenkins jar 1 2 将生成jar包上传到装有docke
  • Netty+MongoDB集群+Kafka集群解决高并发以及实现海量数据存储

    1 环境要求 准备一台安装有Docker的虚拟机 2 Netty简单介绍 Netty 是一个高性能 异步的 基于事件驱动的 NIO 框架 Netty简化和流线化了网络应用的编程开发过程 3 MongoDB简单介绍 MongoDB是一个高可用
  • C语言:从键盘随机输入10个整数,然后输出最大值和最小值

    本题有两种解决方法 xff1a 假设法和选择排序法 1 假设法找最值 include lt stdio h gt int main int a 10 i max mini for i 61 0 i lt 10 i 43 43 scanf s
  • MySQL开启ssl证书

    由于在主从复制中数据是明文的 xff0c 所以就大大降低了安全性 因此需要借助ssl加密来增加其复制的安全性 5 6版本之上 主默认含有证书 MySQL 5 7 18 加密连接mysql ssl rsa setup span class t
  • Vmware16安装(详细)

    目录 1 安装VMware 2 创建虚拟机 3 安装centos 3 IP和主机名称配置 1 安装VMware 之前为了学习Linux系统 xff0c 买了阿里云和腾讯云的服务器 xff0c 不奈什么都没干 xff0c 号就被封了 所有想了
  • mybatis-plus 分页插件

    目录 1 前言 2 配置分页插件 2 1 selectPage 测试 2 2 自定义分页功能 1 前言 大家之前肯定都用过PageHelper来进行分页 xff0c 其实mybatisplus中也提供了一个分页插件PaginationInn
  • STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯

    基于上篇我们已经基本了解了软件界面和如何创建一个项目了 接着我们看如何利用外部按键来控制LED灯的亮灭 xff0c 即外部中断 xff08 本文讲述的是外部中断控制led取反以及如何实现流水灯 xff09 xff08 如果想了解外部中断如何
  • 技术分享 | Frida 实现 Hook 功能的强大能力

    Frida 通过 C 语言将 QuickJS 注入到目标进程中 xff0c 获取完整的内存操作权限 xff0c 达到在程序运行时实时地插入额外代码和数据的目的 官方将调用代码封装为 python 库 xff0c 当然你也可以直接通过其他的语
  • Lora超全知识归纳,对于lora和lorawan的详细介绍

    目录 LORA介绍 LoRa通讯技术 网关信道 网关负载 LoRa模块信道 节点入网 终端LoRa应用方案 设备唤醒 终端LoRa应用实践 网关详情 Lora和loraWAN LoRaWAN 概貌 LoRaWAN体系结构 LoraWAN g
  • 蒙特卡罗MCNP学习汇总(一)-----MCNP简介及编写第一个程序

    目录 简介 xff1a 什么是MC模拟 介绍 应用 运行 编写第一个程序 格式 程序 讲解 现象 简介 xff1a 什么是MC模拟 一种通过随机抽样解决数学问题的一种数值计算方法 MC方法解决的主要数学问题 数值积分问题 随机物理过程 xf
  • 蒙特卡罗MCNP学习汇总(四)--计数基础-探测器

    MCNP输入文件 Title Card Any information the user desires and describing the particular problem Cell Cards A cell is a 3D reg
  • FPGA学习汇总(六)----数码管显示(1)

    目录 概念 单个数码管显示单个数字 操作 代码 现象 分析 四个数码管定时单个显示数字 分析 代码 四个数码管同时显示 分析 代码 现象 四个数码管同时显示定时转换 分析 代码 概念 我们要搞懂数码管首先要明白几个概念 我们先看一个数码管
  • FPGA学习汇总(七)----数码管显示(2)之计数器

    目录 四位同时显示 16进制计数器 单个数码管十进制计数器 四位数码管十进制计数器 代码 分析 四位同时显示 16进制计数器 module KC8 seg dig clock input clock output 7 0 seg outpu
  • FPGA之四位led灯二进制显示

    代码 xff1a module KC419 led clk 模块名和引脚 output 3 0 led led xff08 四个 xff09 input clk 时钟 reg 3 0 led1 led 四个 reg 24 0 counter
  • JWT签名与本地计算的签名不匹配。JWT有效性无法断言,不应被信任

    JWT签名与本地计算的签名不匹配 JWT有效性无法断言 xff0c 不应被信任 错误 xff1a io jsonwebtoken SignatureException JWT signature does not match locally
  • Java判断回文(正序与反序一样)

    用户输入一串字符串 xff0c Java程序实现对该字符串判断 对回文判断主要分为三种 xff1a 1 纯数字 2 纯字母 3 混合型 1 纯数字 将输入的字符串翻转 xff0c 之后分别转换成int形式 xff0c 比较两个整数大小 xf