Java实现图灵机XNx2

2023-10-31

题目要求

程序实现图灵机XNx2的功能。
1.程序风格良好(使用自定义注释模板)
2.提供友好的输入输出,并进行输入数据的正确性验证。

语言环境:

eclipse java

算法设计

在这里插入图片描述

程序代码

Number类
import java.util.Scanner;
//Number类用来存放用户输入的数,以及二进制数和二进制编码的转换。
class Number {
	private int n;//用户输入的数
	private String binary;//二进制数
	private String binarycode;//二进制编码
	//public static final int max=100000;
	@SuppressWarnings("resource")
	public Number() {//类的构造方法
		System.out.print("请输入一个正整数:");
		Scanner input=new Scanner(System.in);
		while(true)//判断输入数的正确性
		{
			n=input.nextInt();
			if(n<=0)
				{
				System.out.println("请输入大于0的数:");
				continue;
				}
				else 
					break;
		}
		
	}
	/*************************************************

	Function:   binary      
	  
	Description:  把用户输入的十进制整数转化成二进制数和二进制编码
		
	Input:   void
		  
	return:  void
			
	*************************************************/
	public void binary() {
		binary=Integer.toBinaryString(n);//将正整数n转化为二进制字符串
		binarycode=new String();
		binarycode+="0";
	    for(int i=0;i<binary.length();i++)//将二进制字符串转化为二进制编码字符串
	    {
	    	if(binary.charAt(i)!='0')
	    	binarycode+=binary.charAt(i)+"0";
	    	else
	    		binarycode+=binary.charAt(i);
	    }
		binarycode+="110";
    }
	/*************************************************

	Function:   binaryPrint      
	  
	Description:  将二进制数和二进制编码打印在屏幕上
		
	Input:   void
		  
	return:  void
			
	*************************************************/
	public void binaryPrint() {
		System.out.print("此数的二进制形式为:");
		System.out.println(binary);
		System.out.print("此数的二进制编码为:");
		System.out.println(binarycode);
	}
	public String getBinarycode() {//用于提取二进制编码
		return binarycode;
	}
}

TuringXNx2类
public class TuringXNx2 {
	public static void main(String[] args) {
		Number n=new Number();//创建对象用户进行输入
		int i=0,memory=0;
		n.binary();
		String binarycode=n.getBinarycode(),binarycodex2=new String(),binaryout=new String();//创建三个字符串,分别用来存放计算前的二进制编码和计算后的二进制编码以及计算后的二进制数
		n.binaryPrint();
		for(i=0;i<binarycode.length();i++) {//进行图灵机XNx2的计算
			if(i+1==binarycode.length()){//实现对二进制编码最后的动态加0
				binarycode+="0";
			}
			 if(memory==0 && binarycode.charAt(i)=='0') {
				binarycodex2+='0';
				memory=0;
				continue;
			    }
				else if(binarycode.charAt(i)=='1'&&memory==0) {
					binarycodex2+='0';
					memory=1;
					continue;
				}
				else if(memory==1&&binarycode.charAt(i)=='0') {
					binarycodex2+='1';
					memory=0;
					continue;
				}
				else if(memory==1&&binarycode.charAt(i)=='1') {
					memory=10;
					binarycodex2+='0';
					continue;
				}
				else if(memory==10&&binarycode.charAt(i)=='0') {
					memory=11;
					binarycodex2+='1';
					continue;
				}
				else if(memory==11&&binarycode.charAt(i)=='0') {
					memory=0;
					binarycodex2+="10";
					break;
				}
		} 
		System.out.println("计算结果为:"+binarycodex2);
		System.out.print("计算的二进制结果为:");
		for(i=0;i<binarycodex2.length();) {//找到计算后的二进制编码中的第一个1并输出
			if(binarycodex2.charAt(i)!='1'){
				i++;
			}
				else{
		System.out.print("1");
		binaryout+="1";
		i++;
		break;}
		}
		for(;i<binarycodex2.length();) {//输出之后的二进制数
		if(binarycodex2.charAt(i)=='0'&&binarycodex2.charAt(i+1)=='1') {
			if(binarycodex2.charAt(i+2)=='0'){
				System.out.print("1");
				binaryout+="1";
				i=i+2;
			}
			else{
				break;
			}	
		}
		else {
			System.out.print("0");
			binaryout+="0";
			i=i+1;}
	  }
		System.out.print("\n");
	System.out.println("整数结果为:"+Integer.parseInt(binaryout,2));//输出转化为整数的结果
 }
}

测试结果

在这里插入图片描述

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

Java实现图灵机XNx2 的相关文章

  • 生信入门(六)——单细胞分析(Seurat)

    生信入门 六 单细胞分析 Seurat 文章目录 生信入门 六 单细胞分析 Seurat 一 数据导入 1 数据来源 2 数据导入 二 标准预处理 1 QC和选择细胞进行进一步分析 2 规范化数据 3 识别高度可变的特征 特征选择 4 缩放
  • Win10家庭版安装Docker for windows遇坑总结

    Win10家庭版安装Docker for windows遇坑总结 安装前的简单了解 安装步骤 添加Hyper v 安装Docker for windows 其他问题 因为做毕设需要结合本组学长开发的系统 不得已开始入坑学习docker 遇到
  • 程序员面试题精选100题(44)-数值的整数次方

    程序员面试题精选100题 44 数值的整数次方 题目 实现函数double Power double base int exponent 求base的exponent次方 不需要考虑溢出 方法一 由于输入的exponent是个int型的数值
  • AR-虚实融合文献阅读整理(二)

    一 增强现实中虚实融合和人机交互技术的研究与应用 黄震宇 基于标志物的识别 利用opencv和三维图形引擎OGRE实现虚实融合展示系统 人机交互方案采用PrimeSense的深度摄像头 通过计算机视觉处理 重建了人体三维谷歌系统定义体感语义
  • C++:CMake常用变量【CMAKE_CXX_FLAGS、CMAKE_BUILD_TYPE、×_BINARY_DIR】

    CMake共用七种变量 如下所示 提供信息的变量 控制变量 描述系统的变量 控制构建过程的变量 语言变量 CTest变量 CPack变量 一 CMake变量引用的方式 使 进 变量的引 在 IF 等语句中 是直接使 变量名 不通过 取值 二

随机推荐

  • Linux系统中/etc/rc.local和/etc/rc.d/rc.local的区别

    etc rc d rc local 用于添加开机启动命令 etc rc local是 etc rc d rc local的软连接 转载于 https www cnblogs com Samuel Leung p 10477162 html
  • 【Spring

    上文讲了 Spring 资源处理 本文讲一下resource的扩展接口相关 资源处理扩展 ResourceLoader 接口 定义 图解 示例 策略 ResourcePatternResolver接口 ResourceLoaderAware
  • 实例修改类属性python_Python类属性和实例属性的优先级

    可以看到 属性可以分为类属性和实例属性 那么问题就来了 如果类属性和实例属性名字相同时 会怎么样 这就涉及Python中类属性和实例属性的优先级的问题了 我们可以做一个实验 在前面类定义的基础上 在实例属性中 也初始化一个localtion
  • DS18B20温度传感器原理及使用教程

    1 芯片简介 DS18B20数字温度传感器提供9 Bit到12 Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能 DS18B20采用的1 Wire通信即仅采用一个数据线 以及地 与微控制器进行通信 该传感
  • Linux下安装/使用mariadb

    文章目录 第一章 mariadb在rhel7上的使用 第二章 mariadb在rhel6上的安装 1 编译源码包 比较慢 2 二进制包安装 比较推荐 第一章 mariadb在rhel7上的使用 rhel7及以上系统默认安装了mariadb
  • C#基础入门之数据类型

    一 值类型和引用类型 在C 中数据类型总共可以分为两类 分别是值类型和引用类型 值类型 表示复制一个当前变量传给方法 当你在这个方法中改变这个变量的值时 最初生命的变量的值不会变 引用类型 表示你操作的数据是同一个 也就是说当你传一个参数给
  • 物联网面试必过要点

    要是能熟记以下知识点 再加上自身的项目经验 过个面试 问题不大 指针定义 一个指向指针的的指针 它指向的指针是指向一个整型数 int a 一个有10个指针的数组 该指针是指向一个整型数的 int a 10 一个指向有10个整型数数组的指针
  • bind的原理和bind的实现

    一 bind的特性 传递的第一个参数做为调用它的函数的this指向 bind可传递若干参数 若第一个参数传递基础数据类型 则调用他的函数的this指向该基础数据类型的包装类实例化对象 若第一个参数为null或undefined 则调用他的函
  • 数据库操作 - 关系模型

    关系数据库是建立在关系模型上的 而关系模型本质上就是若干个存储数据的二维表 可以把它们看作很多Excel表 gt 表的每一行称为记录 Record 记录是一个逻辑意义上的数据 gt 表的每一列称为字段 Column 同一个表的每一行记录都拥
  • 并查集、树状数组

    并查集 树状数组 线段树 并查集 树状数组 树状数组1 单点修改 区间查询 树状数组2 单点查询 区间修改 并查集 模板 并查集 题目描述 如题 现在有一个并查集 你需要完成合并和查询操作 输入格式 第一行包含两个整数 N M N M N
  • 清华镜像用法

    用pip安装模块时 总是会报错 大片红字 请求超时 影响心情 如果使用镜像安装 就会很顺 敲一下回车键 一两秒就搞定 节约时间 平常简单用法是 pip install beautifulsoup4 加入镜像参数后 pip install b
  • 任意进制转换(c++)

    include
  • OpenHarmony源码解析(12): hisysevent

    1 概述 HiSysEvent是面向OpenHarmony系统开发者提供的系统打点功能 通过在关键路径埋点来记录系统在运行过程中的重要信息 辅助开发者定位问题 此外还支持开发者将打点数据上传到云进行大数据质量度量 HiSysEvent包括H
  • 并查集的妙用——Leetcode 1202

    并查集的妙用 Leetcode 1202 给你一个字符串 s 以及该字符串中的一些 索引对 数组 pairs 其中 pairs i a b 表示字符串中的两个索引 编号从 0 开始 你可以 任意多次交换 在 pairs 中任意一对索引处的字
  • Springboot-data-redis结合SpringCache的使用

    spring boot data redis 与 Caache的结合使用 一 springboot data redis操作redis 二 结合Spring Cache 的使用 一 springboot data redis操作redis
  • kali与Windows安装双系统,grub引导器安装失败,或安装grub后无法引导kali系统问题解决

    1 先看问题 安装失败图片 这个时候不要慌 既然它的自动安装无法搞定 那我们就手动安装grub引导器 注意 本人电脑环境是 windows10 分区表类型是GPT类型 尝试安装kali双系统出现grub引导器错误 不同环境下解决方法可能会有
  • React-防抖

    React实际操作 两个事件 onMouseOver 和 onMouseOut HTML div gt this onMouseOver record onMouseOut this onMouseOut gt constructor co
  • 彷徨

    目录 1 slaves 2 core site xml 3 hdfs site xml 4 mapred site xml 注意要将mapred site xml template重命名为 xml的文件 5 Yarn Site xml 6
  • R手册(Common)--面向对象(R6 and S4)

    R 主要面向统计计算 似乎很少会用到面向对象的编程方法 但在统计计算中 在下列情形中使用面向对象的编程方法可以编程更有效率 文章目录 面向对象R6类 面向对象S4类 自定义S4类 实例化函数 S4的泛型函数 面向对象R6类 R 的面向对象
  • Java实现图灵机XNx2

    题目要求 程序实现图灵机XNx2的功能 1 程序风格良好 使用自定义注释模板 2 提供友好的输入输出 并进行输入数据的正确性验证 语言环境 eclipse java 算法设计 程序代码 Number类 import java util Sc