`
从此醉
  • 浏览: 1034545 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

正则表达式练习之题目1103:二次方程计算器

 
阅读更多
题目描述:

设计一个二次方程计算器

输入:

每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式。

输出:

每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”。

样例输入:
x^2+x=3x+4
样例输出:
-1.24 3.24

import java.io.BufferedInputStream;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class 二次方程计算2{
	static int arr[];
	static String regx[] = { "([+-]?)(\\d*)x\\^2", "([+-]?)(\\d*)x",
			"([+-]?)(\\d+)" };
	public static void main(String[] args) {
		Scanner sc = new Scanner(new BufferedInputStream(System.in));
		while (sc.hasNextLine()) {
			String str = sc.nextLine().replaceAll("\\s", "");
			StringBuffer sb = new StringBuffer(str);
			arr = new int[3];
			String s1, s2;
			for (int i = 0; i < 3; i++) {
				Pattern p = Pattern.compile(regx[i]);
				Matcher m = p.matcher(sb);
				int temp = 0;
				int index;
				while (m.find()) {
					index = sb.indexOf("=");
					s1 = m.group(1);
					s2 = m.group(2);
					if (s1.equals("-"))
						temp = -1 * Integer.parseInt(s2);
					else {
						if (s2.equals(""))
							temp = 1;
						else
							temp = Integer.parseInt(s2);
					}
					if(m.start()<index)
						arr[i] += temp;
					else
						arr[i] -= temp;
					sb.replace(m.start(), m.end(), "");
					m.reset();
				}
			}
			int k = arr[1] * arr[1] - 4 * arr[0] * arr[2];
			if (k < 0)
				System.out.println("No Solution");
			else {
				double d1 = (-arr[1] + Math.sqrt(k)) / (2 * arr[0]);
				double d2 = (-arr[1] - Math.sqrt(k)) / (2 * arr[0]);
				System.out.printf("%.2f %.2f\n",d2,d1);
			}
		}
	}
}


分享到:
评论

相关推荐

    从零开始学习正则表达式

    正则表达式语法(05): 边界 正则表达式语法(06): 贪婪匹配与非贪婪匹配 正则表达式语法(07): 匹配转义字符 正则表达式语法(08): 引用子表达式 - 也叫反向正则表达式语法(09): 临界匹配 - 也叫"预搜索"正则表达式语法...

    正则表达式练习题

    自己总结的部分javascript的正则表达式练习,希望可以帮助大家,未完整版,随后追加

    从零开始学习正则表达式.rar

    正则表达式学习基础篇正则表达式语法(01): 关于大小写与中文 正则表达式语法(02): 或者与重复 正则表达式语法(03): 匹配范围 正则表达式语法(04): 常用转义字符与 . 正则表达式语法(05): 边界 正则表达式语法(06): ...

    Python程序设计:正则表达式检索与替换.pptx

    正则表达式是一个特殊的字符序列,它能方便的检查一个字符串是否与某种模式匹配,利用正则可以快速准确的对邮箱进行校验。 任务 邮箱验证 任务知识点 正则表达式概念与语法 常用匹配规则 正则表达式检索与替换 知识...

    正则表达式综合练习

    对正则表达式 在实际使用中 的作用 进行了一一列举。 并且给我了文件爬虫和网络爬虫的解决方案

    正则表达式练习器,练习正则表达式的好工具

    正则表达式练习器,练习正则表达式的好工具

    神奇的匹配-正则表达式之旅

    本书从正则表达式的基本概念、基本语法入手 着重于数字验证、字符串验证、数字和字符串混合验证及html处理等各个方面的应用。并基于目前流行的程序语言和应用环境-如c、asp.net、jsp、或php 全面介绍了创建正则...

    “正则表达式以及python re模块”演讲PPT

    PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    正则表达式(基本包含所有验证的正则)

    用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^u4E00-u9FA5]/g,''))" 一二站长...

    正则表达式 正则表达式 正则表达式

    正则表达式,正则表达式,正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式

    linux系统shell正则表达式-练习工具和教材

    linux系统shell正则表达式-练习工具和教材 正则表达式-练习工具和教材 正则表达式-练习工具和教材

    正则表达式验证工具,正则表达式校验工具

    二、按正则表达式把源码中符合正则的找出;三、符合正则表达式的显示True 4、选择是否不区分大小写(RegexOptions.IgnoreCase),单行模式(RegexOptions.Singleline)还是多行模式(RegexOptions.Multiline) 5、...

    常用正则表达式 正则表达式

    常用正则表达式 正则表达式 常用正则表达式 正则表达式

    正则表达式学习资料以及练习项目代码很多

    正则表达式的学习文档,还有一些其他资料pdf,适合初学但有一点点基础

    正则表达式教程和配套测试工具regextester

    非常棒的正则表达式速成教程,号称30分钟叫你学会正则表达式常用用法。我本人学了一下,感觉不赖,不过俺比较笨,30分钟的东西学了3个多小时,已经从什么都不会变成会编各种复杂的正则筛选条件了^^!这个教程是配合...

    报表工具FineReport正则表达式定义规则

    有时候我们需要用到正则表达式,正则表达式的书写规则如下: 例如输入验证用户密码的正则表达式:“^[a-zA-Z]\w{5,17}$”表示密码规则是以字母开头,长度在6-18之间,只能包含字母、数字和下划线。

    正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar

    正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar

    正则表达式正则表达式

    正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式...

    正则表达式练习器VBScript版

    正则表达式练习器(VBScript版),用一个静态的网页来练习正则表达式

Global site tag (gtag.js) - Google Analytics