小女不想做什么程序员,拜托大神给我做个及其简单的计算器,
\u600e\u6837\u7528C#\u7f16\u5199\u4e00\u4e2a\u8ba1\u7b97\u5668\u7684\u6e90\u7a0b\u5e8f\uff1f\uff1f\u8981\u6700\u7b80\u5355\u7684\u3002\u3002\u3002\uff01\uff01\u5c0f\u5973\u4e0d\u624d\uff0c\u591a\u8c22\u4e86\uff01\uff01\u4f60\u662f\u8981\u505a\u4e00\u4e2a\u7c7b\u4f3c\u4e8eWindows\u9644\u5e26\u7684\u8ba1\u7b97\u5668\u7684\u8fd8\u662f\u76f4\u63a5\u8f93\u5165\u8868\u8fbe\u5f0f\u8fdb\u884c\u8ba1\u7b97\u7684\uff1f
\u7b2c\u4e00\u79cd\u7b80\u5355\uff0c\u65e0\u975e\u5c31\u662f\u505a\u4e00\u4e9b\u6309\u94ae\u5e76\u6267\u884c\u5236\u5b9a\u64cd\u4f5c\u800c\u5df2\u3002
\u7b2c\u4e8c\u79cd\u6211\u5199\u4e86\u4e24\u4efd\uff0c\u5206\u522b\u4f7f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u548c\u8bed\u6cd5\u5206\u6790\u6280\u672f
\u4f7f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\uff1a
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Drawing;
namespace Eval
{
public class EvalEventArgs : EventArgs
{
public EvalEventArgs(string Expressions)
{
this.Expressions = Expressions;
}
public string Expressions { get; set; }
public string Message { get; set; }
}
public class Function
{
static Regex Num = new Regex(@"(\-?\d+\.?\d*)");
static Regex Power = new Regex(Num.ToString() + @"\^" + Num.ToString());
static Regex AddSub = new Regex(Num.ToString() + "([+-])" + Num.ToString());
static Regex MulDiv = new Regex(Num.ToString() + "([*/])" + Num.ToString());
static Regex AndXor = new Regex(Num.ToString() + "(and|xor)" + Num.ToString());
static Regex InnerRegex = new Regex(@"\([^\(\)]+\)");
static Regex FunctionRegex = new Regex(@"(ln|lg|sin|cos|tan|ctg|sh|ch|th|arcsin|arccos|arctan|not)" +Num.ToString());
static Regex LBrackets = new Regex(@"\{|\[");
static Regex RBrackets = new Regex(@"\}|\]");
const double PI = Math.PI;
const double e = Math.E;
public event EventHandler Evaling;
public event EventHandler EvalComplent;
public event EventHandler Error;
private void OnError(string Expressions, string Message)
{
if (Error != null) Error(this, new EvalEventArgs(Expressions) { Message = Message });
IsAbort = true;
}
private bool IsAbort = false;
/// \u8ba1\u7b97\u8868\u8fbe\u5f0f
/// \u8868\u8fbe\u5f0f
public void Eval(string Expressions)
{
IsAbort = false;
Expressions = Expressions.ToLower();
Expressions = Expressions.Replace("pi", Math.PI.ToString()).Replace("e",Math.E.ToString());
Expressions = LBrackets.Replace(Expressions, (Match match) => { return "("; });
Expressions = RBrackets.Replace(Expressions, (Match match) => { return ")"; });
if (Check(Expressions))
{
try
{
do
{
Expressions = InnerRegex.Replace(Expressions, (Match match) =>
{
return EvalInner(match.Value.Substring(1, match.Value.Length - 2));
});
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
while (InnerRegex.IsMatch(Expressions) && !IsAbort);
if(!IsAbort) Expressions = EvalInner(Expressions);
if (!IsAbort && EvalComplent != null) EvalComplent(this, new EvalEventArgs(Expressions));
}
catch(Exception ex)
{
OnError(Expressions, ex.Message);
}
}
}
///
/// \u7528\u4e8e\u8ba1\u7b97\u4e0d\u542b\u62ec\u53f7\u7684\u8868\u8fbe\u5f0f\u7684\u503c
///
/// \u8981\u8ba1\u7b97\u7684\u8868\u8fbe\u5f0f
/// \u8ba1\u7b97\u7ed3\u679c
public string EvalInner(string Expressions)
{
while (FunctionRegex.IsMatch(Expressions) && !IsAbort)
{
Expressions = FunctionRegex.Replace(Expressions, (Match match) => { return EvalSingle(match.Value); });
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
while (AndXor.IsMatch(Expressions) && !IsAbort)
{
Expressions = AndXor.Replace(Expressions, (Match match) =>
{
double P1=double.Parse(match.Groups[1].Value);
double P2=double.Parse(match.Groups[3].Value);
if((uint)P1!=P1 || (uint)P1!=P1 )
OnError(Expressions,"");
if (match.Value.Contains("and"))
return ((uint)P1 & (uint)P2).ToString();
else
return ((uint)P1 ^ (uint)P2).ToString();
});
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
while (Power.IsMatch(Expressions) && !IsAbort)
{
Expressions = Power.Replace(Expressions, (Match match) =>
{
return System.Math.Pow(double.Parse(match.Groups[0].Value), double.Parse(match.Groups[2].Value)).ToString();
});
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
while (MulDiv.IsMatch(Expressions) && !IsAbort)
{
Expressions = MulDiv.Replace(Expressions, (Match match) =>
{
if (match.Value.Contains("*"))
return (double.Parse(match.Groups[1].Value) * double.Parse(match.Groups[3].Value)).ToString();
else
return (double.Parse(match.Groups[1].Value) / double.Parse(match.Groups[3].Value)).ToString();
});
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
while (AddSub.IsMatch(Expressions) && !IsAbort)
{
Expressions = AddSub.Replace(Expressions, (Match match) =>
{
if (match.Value.Contains("+"))
return (double.Parse(match.Groups[1].Value) + double.Parse(match.Groups[3].Value)).ToString();
else
return (double.Parse(match.Groups[1].Value) - double.Parse(match.Groups[3].Value)).ToString();
});
if (Evaling != null) Evaling(this, new EvalEventArgs(Expressions));
}
return IsAbort ? null : Expressions;
}
///
/// \u7528\u4e8e\u8ba1\u7b97\u5355\u53d8\u91cf\u51fd\u6570\u8868\u8fbe\u5f0f\u7684\u503c
///
/// \u8981\u8ba1\u7b97\u7684\u8868\u8fbe\u5f0f
/// \u8ba1\u7b97\u7ed3\u679c
public string EvalSingle(string Expressions)
{
while (FunctionRegex.IsMatch(Expressions) && !IsAbort)
{
Expressions = FunctionRegex.Replace(Expressions, (Match match) => { return EvalSingle(match); });
}
return IsAbort ? null : Expressions;
}
private string EvalSingle(Match match)
{
//ln|lg|sin|cos|tan|ctg|sh|ch|th|arcsin|arccos|arctan
double Param = double.Parse(match.Groups[2].Value.Trim(char.Parse("("), char.Parse(")")));
double Result = double.NaN;
if (!double.IsNaN(Param))
{
if (match.Value.StartsWith("ln"))
{
if (Param > 0)
Result = System.Math.Log(Param);
else
OnError(match.Value, "\u8868\u8fbe\u5f0f\u4e2d\u6709\u9519\u8bef\uff1a\u5bf9\u6570\u7684\u771f\u6570\u4e0d\u80fd\u5c0f\u4e8e\u96f6\uff01");
}
else if (match.Value.StartsWith("lg"))
{
if (Param > 0)
Result = System.Math.Log10(Param);
else
OnError(match.Value, "\u8868\u8fbe\u5f0f\u4e2d\u6709\u9519\u8bef\uff1a\u5bf9\u6570\u7684\u771f\u6570\u4e0d\u80fd\u5c0f\u4e8e\u96f6\uff01");
}
else if (match.Value.StartsWith("sin"))
Result = System.Math.Sin(Param * PI / 180);
else if (match.Value.StartsWith("sqrt"))
Result = System.Math.Sqrt(Param);
else if (match.Value.StartsWith("cos"))
Result = System.Math.Cos(Param * PI / 180);
else if (match.Value.StartsWith("tan"))
Result = System.Math.Tan(Param * PI / 180);
else if (match.Value.StartsWith("ctg"))
Result = 1 / System.Math.Tan(Param * PI / 180);
else if (match.Value.StartsWith("sh"))
Result = System.Math.Sinh(Param);
else if (match.Value.StartsWith("ch"))
Result = System.Math.Cosh(Param);
else if (match.Value.StartsWith("th"))
Result = System.Math.Tanh(Param);
else if (match.Value.StartsWith("arcsin"))
Result = System.Math.Asin(Param);
else if (match.Value.StartsWith("arccos"))
Result = System.Math.Acos(Param);
else if (match.Value.StartsWith("arctan"))
Result = System.Math.Atan(Param);
else if (match.Value.StartsWith("not"))
{
if (((uint)Param) != Param)
OnError(match.Value, "\u903b\u8f91\u8fd0\u7b97\u53ea\u80fd\u9488\u5bf9\u6574\u6570\uff01");
else
Result = ~(uint)Param;
}
else
OnError(match.Value,"\u8868\u8fbe\u5f0f\u542b\u6709\u4e0d\u88ab\u652f\u6301\u7684\u51fd\u6570\uff01");
}
else
OnError(match.Value, "\u8868\u8fbe\u5f0f\u4e2d\u6709\u9519\u8bef\uff01");
if (double.IsInfinity(Result)) OnError(match.Value, "\u7ed3\u679c\u8d85\u51fa\u4e86\u8303\u56f4\uff01");
return Result == double.NaN ? null : Result.ToString();
}
///
/// \u5bf9\u8868\u8fbe\u5f0f\u8fdb\u884c\u68c0\u67e5\uff0c\u786e\u4fdd\u5176\u683c\u5f0f\u7b26\u5408\u8981\u6c42
///
/// \u8868\u8fbe\u5f0f
/// \u662f\u5426\u7b26\u5408\u8981\u6c42
public bool Check(string Expressions)
{
if (!CheckBrackets(Expressions))
{
OnError(Expressions, "\u62ec\u53f7\u4e0d\u5339\u914d\uff01");
return false;
}
else
return true;
}
///
/// \u68c0\u67e5\u62ec\u53f7\u662f\u5426\u5339\u914d
///
/// \u8868\u8fbe\u5f0f
/// \u662f\u5426\u5339\u914d
private bool CheckBrackets(string Expressions)
{
int Num = 0;
foreach (char c in Expressions)
{
if (c == char.Parse("(")) { Num++; }
if (c == char.Parse(")")) { Num--; }
}
if (Num != 0) { return false; } else { return true; }
}
}
}
Evaling\u4e8b\u4ef6\u53ef\u4ee5\u83b7\u53d6\u4e2d\u95f4\u7ed3\u679c
EvalComplent\u4e8b\u4ef6\u8868\u660e\u8ba1\u7b97\u5b8c\u6210
Error\u4e8b\u4ef6\u8868\u660e\u53d1\u751f\u9519\u8bef
\u8c03\u7528\u65b9\u6cd5\uff1a
Function f = new Function();
f.Eval(\u8981\u8ba1\u7b97\u7684\u8868\u8fbe\u5f0f)
\u8bed\u6cd5\u5206\u6790\u7684\u6bd4\u8f83\u957f\uff0c\u60f3\u8981\u7684\u8bdd\u7559\u4e0b\u90ae\u7bb1\u6211\u53d1\u8fc7\u53bb
static void Main(string[] args)
{
int i = 0, j = 0, zhi = 0;
Console.WriteLine("input\u7b2c\u4e00\u4e2a\u6570");
int.TryParse(Console.ReadLine(), out i);
Console.WriteLine("input\u8fd0\u7b97\u7b26");
string suanfa = Console.ReadLine().Trim();
Console.WriteLine("input\u7b2c\u4e8c\u4e2a\u6570");
int.TryParse(Console.ReadLine(), out j);
switch (suanfa)
{
case "+":
zhi = i + j; break;
case "-":
zhi = i - j; break;
case "*":
zhi = i * j; break;
case "/":
if (j == 0)
{
Console.WriteLine("\u5bf9\u4e0d\u8d77\uff0c0\u4e0d\u77e5\u80fd\u4f5c\u4e3a\u9664\u6570");
}
else
{
zhi = i / j;
}
break;
default:
Console.WriteLine("\u8fd0\u7b97\u7b26\u8f93\u5165\u6709\u8bef\uff01");
break; ;
}
Console.WriteLine(i + suanfa + j + "=" + zhi);
Console.ReadKey();
}
还是给你写一个吧,你复制过去自己运行一下看看,行不行,有问题跟我说,再改
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
/**
* 计算器类
*/
public class Jsq extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
public static void main(String[] args)
{
new Jsq();
}
/**
* 下面是具体实现
*/
JTextField text1;
JRadioButton radio1;
JRadioButton radio2;
JRadioButton radio3;
JRadioButton radio4;
JTextField text2;
JButton button;
JLabel label;
String fh = "";
public Jsq()
{
super("简单计算器");
JPanel p1 = new JPanel();
p1.add(new JLabel("操作数1"));
text1 = new JTextField(15);
p1.add(text1);
p1.setBounds(5, 5, 220, 80);
JPanel p2 = new JPanel();
radio1 = new JRadioButton("+", true);
radio2 = new JRadioButton("-", false);
radio3 = new JRadioButton("*", false);
radio4 = new JRadioButton("/", false);
ButtonGroup bg = new ButtonGroup();
p2.add(radio1);
p2.add(radio2);
p2.add(radio3);
p2.add(radio4);
bg.add(radio1);
bg.add(radio2);
bg.add(radio3);
bg.add(radio4);
p2.setBounds(5, 90, 220, 80);
JPanel p3 = new JPanel();
p3.add(new JLabel("操作数2"));
text2 = new JTextField(15);
p3.add(text2);
p3.setBounds(5, 175, 220, 80);
JPanel p4 = new JPanel();
button = new JButton("计算");
button.addActionListener(this);
p4.add(button);
label = new JLabel("");
p4.add(label);
p4.setBounds(5, 260, 220, 80);
JPanel p5 = new JPanel();
p5.add(p1);
p5.add(p2);
p5.add(p3);
p5.add(p4);
add(p5);
setBounds(160, 60, 250, 260);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e)
{
String num1 = "".equals(text1.getText()) ? "0" : text1.getText();
String num2 = "".equals(text2.getText()) ? "0" : text2.getText();
String sum = "";
try
{
if (radio1.isSelected())
{
sum = String.valueOf(Double.parseDouble(num1) + Double.parseDouble(num2));
}
else if (radio2.isSelected())
{
sum = String.valueOf(Double.parseDouble(num1) - Double.parseDouble(num2));
}
else if (radio3.isSelected())
{
sum = String.valueOf(Double.parseDouble(num1) * Double.parseDouble(num2));
}
else if (radio4.isSelected())
{
if ("0".equals(num2))
{
sum = "ERROR";
}
else
{
sum = String.valueOf(Double.parseDouble(num1) / Double.parseDouble(num2));
}
}
}
catch (Exception e2)
{
label.setText("ERROR");
}
label.setText(sum);
}
}
计算按钮触发事件,获取操作数1和2的值以及运算符,先判断操作数是否为空,再根据操作符的类型做相应的处理.
你为什么不想做程序员?那你还学
两年没做程序了!
你一男的装什么清纯小女生……
绛旓細杩樻槸缁欎綘鍐欎竴涓惂锛屼綘澶嶅埗杩囧幓鑷繁杩愯涓涓嬬湅鐪嬶紝琛屼笉琛岋紝鏈夐棶棰樿窡鎴戣锛屽啀鏀 import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;impo...
绛旓細1銆佽蒋浠跺伐绋嬪笀锛氳蒋浠跺伐绋嬪笀鎸囩殑灏辨槸浠庝簨杞欢寮鍙戠殑浜轰滑锛岃繖涓涓氱殑浠庝笟浜哄憳姣旇緝灏戯紝灏变笟鐨勫墠鏅瘮杈冧笉閿欍2銆佹暟鎹簱绠$悊锛氭瘯涓氱敓鍦ㄦ瘯涓氫箣鍚庯紝杩樺彲浠ヤ粠浜嬩紒浜嬩笟鍗曚綅鐨勬暟鎹鐞嗗伐浣滐紝褰撶劧锛屼粠浜杩欎釜宸ヤ綔锛屼篃蹇呴』瑕佸叿澶囦竴瀹氱殑鏁版嵁搴撲笓涓氱煡璇嗐3銆佷笁缁村姩鐢昏璁★細瀵逛簬瀛︿範鍔ㄧ敾璁捐杞欢鐨勪汉浠潵璇达紝姣旇緝閲嶈鐨勮繕鏄...
绛旓細濡傛灉鎯充粠浜鏁欏宀椾綅鐨勫鐢熶竴瀹氳鑰冨彇鑰佸笀璧勬牸璇佹墠鍙互鑾锋鑱屼綅,濡傛灉鎯宠杩涘叆澶у褰撴暀鎺堢殑瀛︾敓鍙互缁х画娣遍,鏀昏鍗氬+鐮旂┒鐢熸潵鎻愰珮鑷繁鐨勫鍘嗐 UI璁捐甯堜笉浠呬粎鍙槸璁╄蒋浠舵嫢鏈夌編瑙傜殑鐣岄潰,鏇撮噸瑕佺殑鏄杞欢鐨勬搷浣滄洿鍔犵殑绠鍗,鎯宠鎴愪负浼樼鐨刄I璁捐甯堜竴瀹氳鍏峰鑹ソ鐨勫缇庡拰璁捐鑳藉姏銆俇I璁捐甯堟槸闆嗗悎绉戝涓庤壓鏈簬涓浣撶殑鑱屼綅,鎯...
绛旓細鍙互璧颁骇鍝侊紝鎴栬呮祴璇曪紝鎴栬呭疄鏂斤紝SEO,SEM锛岃繍钀ヤ箣绫荤殑宸ヤ綔鍛锛屽紑鍙戠‘瀹炴槸鎸虹啲浜虹殑锛屽綋鐒朵綘涔熷彲浠ユ壘涓浜涗綘鍠滄鐨勫伐浣溿
绛旓細1銆佸鏋滀笉鍋氬紑鍙戯紝鍙互鍋氭祴璇曠浉鍏冲伐浣溿傚寮鍙戣鏈変竴瀹氫簡瑙o紝鑳界湅鎳傞渶姹傦紝浼氭祴璇曞伐鍏枫2銆佽嚜涓诲垱涓氾紝浠庝簨杩欎釜棰嗗煙鐨勪笟鍔★紱3銆佸仛浜у搧闇姹傚伐浣滐紝鐩稿綋浜庝骇鍝佺粡鐞嗭紝浣嗚繖涓杞欢棰嗗煙瑕佺浉褰撶殑浜嗚В銆4銆佸仛淇℃伅鍛橈紝绠鍗曠殑鏂囧憳宸ヤ綔锛岄渶瑕佺敤鐢佃剳鐨勫湴鏂瑰浜嗭紝寰堝浜哄苟涓嶉渶瑕佸紑鍙戯紝闇瑕佺殑鏄疘T淇℃伅锛岀患鍚堟х殑銆備細琛ㄦ牸...
绛旓細闄や簡绋嬪簭鍛橈紝璁$畻鏈轰笓涓氱殑灏变笟鏂瑰悜杩樻湁杩欎簺锛氱涓锛屼骇鍝佺粡鐞嗭紝涓撻棬璐熻矗浜у搧绠$悊鐨勮亴浣嶃傛牴鎹敤鎴风殑闇姹傛潵纭畾寮鍙戜骇鍝佺殑绫诲瀷銆佷娇鐢ㄧ殑鎶鏈拰鍟嗕笟妯″紡锛屽苟鎺ㄥ姩鐩稿簲浜у搧寮鍙戠殑鍏ㄨ繃绋嬨傛祴璇曞伐绋嬪笀锛屾槸杞欢璐ㄩ噺鐨勬妸鍏宠咃紝涓昏鏄紑灞曞杞欢寮鍙戦」鐩殑鍚勭娴嬭瘯宸ヤ綔锛屾彁鍑哄浜у搧鐨勮繘涓姝ユ敼杩涘缓璁傝繍缁村伐绋嬪笀涓昏璐熻矗缁存姢...
绛旓細1.缃戠粶宸ョ▼甯 鍦ㄥ悇澶т簰鑱旂綉鍏徃鎴栬呯綉缁滀俊鎭妧鏈紒涓氫粠浜嬭绠楁満鐩稿叧宸ヤ綔銆備竴鑸潵璇达紝璁$畻鏈轰笓涓氭渶瀵瑰彛鐨勪笓涓氬伐浣滃氨鏄粠浜嬬綉缁滃伐绋嬪笀宸ヤ綔锛岃繖涓亴浣嶄竴鑸兘鏄湪鍚勫ぇ浜掕仈缃戝叕鍙告垨鑰呯綉缁滀俊鎭妧鏈紒涓氥傚浗鍐呰绠楁満琛屼笟鍒嗗竷鏈骞挎硾鍜屽簲鐢ㄦ渶澶氱殑鍦版柟灏辨槸骞垮窞銆佹繁鍦炽佹澀宸炰互鍙婁笂娴枫佸寳浜瓑鍦帮紝杩欎簺鍦版柟宸ヤ綔宀椾綅澶锛屼粠浜...
绛旓細鎵浠ユ垜鎯宠浆琛屻傝绉戝鐨勪笓涓氭槸涓撴敞浜庡浘鍍忓鐞嗙殑淇″彿澶勭悊鐮旂┒鐢熴傚伐浣滄槸缂栫▼锛屽鏉锛屼粈涔閮芥湁锛屼絾娌℃湁淇″彿澶勭悊鍜屽浘鍍忓鐞嗐備粠鑷繁鐨勬劅鎯呮潵鐪锛岀▼搴忓憳鐨勫伐璧勫緢楂橈紝浣嗚鎯冲仛濂借繖椤瑰伐浣滐紝绋嬪簭鍛樻湰韬殑鍘嬪姏涔熷緢澶с備负姝わ紝瑕佷笉鏂涔狅紝鎻愰珮鑷繁銆傚悓鏃惰瀛︿細鍙婃椂娑堥櫎宸ヤ綔涓殑鍚勭鍥伴毦鍜岄殰纰嶃傚彧鏈夎繖鏍凤紝浣犳墠鑳借交瑁...
绛旓細1 鍘诲綋鑰佸笀 2 鍦ㄨ蒋浠惰涓氬仛涓骞达紝鏈夌粡楠屽悗杞埌鐩稿叧琛屼笟锛屾瘮濡傛妧鏈敮鎸侊紝绠$悊 3 鍋氭祴璇曪紝姣旇緝鏈夊墠閫旓紝涓嶇疮锛屽氨鏄啓鏂囨。姣旇緝楹荤儲
绛旓細鍥犱负姣曠珶杩樻槸瀛︾敓锛屽涓氳繕鏄緢绻佸繖锛岃绋嬪簭鍛涓鑸笂鐝殑鏃堕棿閮芥槸娌℃棩娌″鐨勶紝棣栧厛鏃堕棿鍜屽コ澶у鐢熷涓嶄笂鐐癸紝鍏舵灏辨槸绋嬪簭鍛橀紦鍔卞笀杩欑瀵逛簬涓涓病缁忓巻杩囩ぞ浼氱殑濂崇敓鏉ヨ杩樻槸寰堝洶闅剧殑锛屽洜涓 浠栦滑杩樻槸瀛︽牎閲岀殑瀛︾敓涓嶇煡閬撶ぞ浼氱殑鍘嬪姏鍜岀敓娲绘槸鏈夊涔堢殑鍥伴毦锛屽浜庣▼搴忓憳鐨勫伐浣滃彲鑳戒篃涓嶆槸寰堜簡瑙g殑锛屾墍浠ユ棤浠庝笅鎵嬪幓...