这里我的思路是暴力算法。就是不断试错,不限循环次数,直到找到正确的情况为止。
通过走随机,不断控制在123456789中添加+或者-,再通过正则表达式筛选出所有的数字(包含正负),转换为Integer进行计算,结果为100则输出:

package day_12_06.day;

import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* 在字符串"123456789"中间随机插入"+"或者"-",使得表达式计算结果为100,列出一个这样的式子
*
* @author soberw
* @Classname SumIs100
* @Description
* @Date 2021-12-06 17:28
*/
public class SumIs100 {
public static void main(String[] args) {
//控制运算符
String[] op = {"", "-", "+"};
Random random = new Random();
while (true) {
//建一个字符串对象用于存放表达式
StringBuilder sbu = new StringBuilder("1");
//存放和
int sum = 0;
//从第二位开始随机插入运算符
for (int i = 2; i <= 9; i++) {
sbu.append(op[random.nextInt(op.length)]);
sbu.append(i);
}
//通过正则筛选出所有的数字,带符号,如 +3、如 -56
Pattern p = Pattern.compile("[+-]*[0-9]+");
Matcher matcher = p.matcher(sbu.toString());
while (matcher.find()) {
//转换为Integer便于计算,累加在sum中
sum += Integer.parseInt(matcher.group());
}
//等于100表示找到了,退出循环
if (sum == 100) {
System.out.printf("%s = 100", sbu);
break;
}
}
}
}

运行结果:

如果你有更好的方法可以分享在评论区。

用Java实现在123456789中随机插入+或者-,使表达式的结果为100的更多相关文章

  1. 用java在mysql中随机插入9000 000条数据

    package query; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; ...

  2. 实现在edittext中任意插入图片

    Myedittext: public class MyEditText extends EditText { public MyEditText(Context context) { super(co ...

  3. java 从List<Integer> 中随机获取6个数

    List<Integer> list 为不重复的数字集合,例如:1,2,3,4,5,6,7,8,9,10 从中随机获取不重复的6个数.代码如下. List<Integer> l ...

  4. java 从txt文本中随机获取名字

    代码: /* 获取随机文件文字 */ public static String random(String path) {//路径 String name = null; try { //把文本文件中 ...

  5. 用Java实现在【520,1314】之间生成随机整数的故事

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 在未来城市工作的的程序员小木,做了一个梦,梦到自己在塔鲁姆的街道上看到一个姑娘,这个姑娘从远处走向他,脸上带着微笑.让小木 ...

  6. java 从List中随机取出一个元素

    java 从List中随机取出一个元素 List<Integer> list = new ArrayList<>(); Random random = new Random() ...

  7. dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其标签关联的其他文章地址

    dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其他标签关联的文章地址 1 添加2个自定义函数 在dede/include/extend.func.php底部 添加如下代码 //根据文 ...

  8. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

  9. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

随机推荐

  1. CAS学习笔记三:SpringBoot自动配置与手动配置过滤器方式集成CAS客户端

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式集成CAS客户端. 需要提前搭建 CAS 服务端,参考 https://www.cnblogs.com/hell ...

  2. CSS基础 结构伪类选择器 last-child、first-child和nth-of-type的使用方法

    一.通过伪类选择器查找单个标签元素html结构 <div> <a herf='#'>导航1</a> <a herf='#'>导航2</a> ...

  3. unittest_测试报告(6)

    用例执行完成后,执行结果默认是输出在屏幕上,其实我们可以把结果输出到一个文件中,形成测试报告. unittest自带的测试报告是文本形式的,如下代码: import unittest if __nam ...

  4. sql server - 修改表名、列名

    EXEC sp_rename '旧表名', '新表名'; 例子 EXEC sp_rename 'saveremark', 'drawingLooking'; EXEC sp_rename '表名.[列 ...

  5. IDEA安装与配置

    一.安装 二.配置 配置字体:source pro code 忽略大小写提示 自动导包 多 tab显示 设置快捷键 设置鼠标悬浮提示 设置行号和方法分隔符 设置maven 断点调试 字符编码 自动删除 ...

  6. 遍历hashmap的6种方法

    1. 通过ForEach循环进行遍历 mport java.io.IOException; import java.util.HashMap; import java.util.Map; public ...

  7. 使用.NET 6开发TodoList应用(26)——实现Configuration和Option的强类型绑定

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在上一篇文章使用.NET 6开发TodoList应用(25)--实现RefreshToken中,我们通过使用Configura ...

  8. 在 python 项目中如何记录日志

    一. 概述 写本文的目的是我在写 python 项目的时候需要记录日志,我忘记怎么处理了,每次都需要去网上查一遍,好记性不如烂笔头, 这里把查阅的内容记录下来,方便以后查找. python 项目中记录 ...

  9. [转载]Win10蓝牙设备删除后无法连接解决办法

    转自 https://blog.csdn.net/Tokeyman/article/details/86268005 现象 一般情况下,当操作系统无法与蓝牙设备,比如鼠标键盘等出现无法连接的情况,通过 ...

  10. IE8中li添加float属性,中英数字混合BUG

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...