datastringdeal.java

来自「做了一个还算复杂的计算器,还是有一定的 参考价值的(比较适合中初级者)」· Java 代码 · 共 1,041 行 · 第 1/3 页

JAVA
1,041
字号
        		count=count-2;
        		i--;
        	}
        	if (string[i]=="/"){
        		if (Double.parseDouble(string[i+1])==0)
        			return "The Expression is not valid \nor may be misconceived!\nYou must enter the start button to restart!"; 
        		string[i-1]=String.valueOf(Double.parseDouble(string[i-1])/Double.parseDouble(string[i+1]));
        		for (int j=i;j<=count-2;j++)
        			string[j]=string[j+2];
        		count=count-2;
        		i--;
        	}
        }
        //加减的处理
        for (int i=0;i<=count;i++){
        	if ((string[0])=="-"||(string[0])=="+"){
        		if (string[0]=="-"){
        			string[0]=String.valueOf(-Double.parseDouble(string[1]));
        			for (int j=1;j<=count-1;j++)
        				string[j]=string[j+1];
        			count--;
        		}
        		if (string[0]=="+"){
        			string[0]=String.valueOf(Double.parseDouble(string[1]));
        			for (int j=1;j<=count-1;j++)
        				string[j]=string[j+1];
        			count--;
        		}
        	}
        	if (string[i]=="+"){
        		string[i-1]=String.valueOf(Double.parseDouble(string[i-1])+Double.parseDouble(string[i+1]));
        		for (int j=i;j<=count-2;j++)
        			string[j]=string[j+2];
        		count=count-2;
        		i--;        	
        	}
        	if (string[i]=="-"){
        		string[i-1]=String.valueOf(Double.parseDouble(string[i-1])-Double.parseDouble(string[i+1]));
        		for (int j=i;j<=count-2;j++)
        			string[j]=string[j+2];
        		count=count-2;
        		i--;        	
        	}
        }
        return string[0];
    }
    //将二进制字符串转化为十进制字符串
    public String BinaryToDecimalString(String inner){
    	if (inner=="")
    		return inner;
    	char[] temp = inner.toCharArray();
    	boolean hasPoint=false;
    	int sep=0;
    	for (int i=0;i<temp.length;i++)
    		if (temp[i]=='.'){
    			hasPoint=true;
    			sep=i;
    		}
    	//有小数点的情况
    	if (hasPoint){
    		double data=0;
    		for (int i=sep-1;i>=0;i--)
    		    if (temp[i]=='1')
    			    data = data+(double)(Math.pow(2,sep-1-i));
    	    for (int i=sep+1;i<temp.length;i++)
    	    	if (temp[i]=='1')
    	    		data = data+(double)(Math.pow(2,(sep+1-i-1)));
    	    String str = String.valueOf(data);
    	    return str;
    	}
    	//无小数点的情况
    	int data=0;
    	for (int i=temp.length-1;i>=0;i--)
    		if (temp[i]=='1')
    			data = data+(int)(Math.pow(2,temp.length-1-i));
    	String str = String.valueOf(data);
    	return str; 
    }
    //将八进制字符串转化为十进制字符串
    public String OctalToDecimalString(String inner){
    	if (inner=="")
    		return inner;
    	char[] temp = inner.toCharArray();
    	int sep=0;
    	boolean hasPoint=false;
    	for (int i=0;i<temp.length;i++)
    		if (temp[i]=='.'){
    			hasPoint=true;
    			sep=i;
    		}
    	//有小数点的情况
    	if (hasPoint){
    		double data=0;
    		for (int i=sep-1;i>=0;i--){
    			if (temp[i]=='7')
    			    data = data+7*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='6')
    			    data = data+6*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='5')
    			    data = data+5*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='4')
    			    data = data+4*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='3')
    			    data = data+3*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='2')
    			    data = data+2*(int)(Math.pow(8,sep-1-i));
    		    if (temp[i]=='1')
    			    data = data+(int)(Math.pow(8,sep-1-i)); 
    		}
    		for (int i=sep+1;i<temp.length;i++){
    			if (temp[i]=='7')
    			    data = data+7*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='6')
    			    data = data+6*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='5')
    			    data = data+5*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='4')
    			    data = data+4*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='3')
    			    data = data+3*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='2')
    			    data = data+2*(int)(Math.pow(8,(sep+1-i-1)));
    		    if (temp[i]=='1')
    			    data = data+(int)(Math.pow(8,(sep+1-i-1)));
    		}
    		String str = String.valueOf(data);
    		return str;
    	}
    	//无小数点的情况
    	double data=0;
    	for (int i=temp.length-1;i>=0;i--){
    		if (temp[i]=='7')
    			data = data+7*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='6')
    			data = data+6*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='5')
    			data = data+5*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='4')
    			data = data+4*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='3')
    			data = data+3*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='2')
    			data = data+2*(Math.pow(8,temp.length-1-i));
    		if (temp[i]=='1')
    			data = data+(Math.pow(8,temp.length-1-i)); 
    	}
    	String str = String.valueOf(data);
        return str;
    }
    //十六进制转化为十进制的实例方法
    public String HexToDecimalString(String inner){
    	if (inner=="")
    		return inner;
    	char[] temp = inner.toCharArray();
    	int sep=0;
    	boolean hasPoint=false;
    	for (int i=0;i<temp.length;i++)
    		if (temp[i]=='.'){
    			hasPoint=true;
    			sep=i;
    		}
    	//有小数点的情况
    	if (hasPoint){
    		double data=0;
    		for (int i=sep-1;i>=0;i--){
    			if (temp[i]=='F')
    			    data = data+15*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='E')
    			    data = data+14*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='D')
    			    data = data+13*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='C')
    			    data = data+12*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='B')
    			    data = data+11*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='A')
    			    data = data+10*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='9')
    			    data = data+9*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='8')
    			    data = data+8*(int)(Math.pow(16,sep-1-i));
    			if (temp[i]=='7')
    			    data = data+7*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='6')
    			    data = data+6*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='5')
    			    data = data+5*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='4')
    			    data = data+4*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='3')
    			    data = data+3*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='2')
    			    data = data+2*(int)(Math.pow(16,sep-1-i));
    		    if (temp[i]=='1')
    			    data = data+(int)(Math.pow(16,sep-1-i)); 
    		}
    		for (int i=sep+1;i<temp.length;i++){
    			if (temp[i]=='F')
    			    data = data+15*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='E')
    			    data = data+14*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='D')
    			    data = data+13*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='C')
    			    data = data+12*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='B')
    			    data = data+11*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='A')
    			    data = data+10*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='9')
    			    data = data+9*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='8')
    			    data = data+8*(int)(Math.pow(16,(sep+1-i-1)));
    			if (temp[i]=='7')
    			    data = data+7*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='6')
    			    data = data+6*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='5')
    			    data = data+5*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='4')
    			    data = data+4*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='3')
    			    data = data+3*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='2')
    			    data = data+2*(int)(Math.pow(16,(sep+1-i-1)));
    		    if (temp[i]=='1')
    			    data = data+(int)(Math.pow(16,(sep+1-i-1)));
    		}
    		String str = String.valueOf(data);
    		return str;
    	}
    	//无小数点的情况
    	int data=0;
    	for (int i=temp.length-1;i>=0;i--){
    		if (temp[i]=='F')
    			data = data+15*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='E')
    			data = data+14*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='D')
    			data = data+13*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='C')
    			data = data+12*(int)(Math.pow(16,temp.length-1-i));
    	    if (temp[i]=='B')
    			data = data+11*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='A')
    		    data = data+10*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='9')
    			data = data+9*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='8')
    			data = data+8*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='7')
    			data = data+7*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='6')
    			data = data+6*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='5')
    			data = data+5*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='4')
    			data = data+4*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='3')
    			data = data+3*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='2')
    			data = data+2*(int)(Math.pow(16,temp.length-1-i));
    		if (temp[i]=='1')
    			data = data+(int)(Math.pow(16,temp.length-1-i)); 
    	}
    	String str = String.valueOf(data);
    	return str;
    }
    //十进制字符串转化为二进制字符串
    public String DecimalToBinaryString(String string){
    	if (string=="")
    		return string;
    	double data = Double.parseDouble(string);
    	int data1 = (int)data;
    	double data2 = data-(int)data;
    	String data1String = Integer.toBinaryString(data1);
    	double rational=0;
    	if ((data-(int)data)!=0){
    		for (int i=0;i<4;i++)
    			if ((data2*2)>=1){
    				rational = rational+0.1*Math.pow(10,-i);
    				data2 = data2*2-1;
    			}
    		String rationalString = String.valueOf(rational);
    		char digits[] = rationalString.toCharArray();
    		rationalString = "";
    		for (int i=2;i<digits.length;i++)
    			rationalString = rationalString+String.valueOf(digits[i]);
    		string = data1String+"."+rationalString;
    		return string;
    	}
    	return data1String;
    }
    //十进制转化为八进制字符串
    public String DecimalToOctalString(String string){
    	if (string=="")
    		return string;
    	double data = Double.parseDouble(string);
    	int data1 = (int)data;
    	double data2 = data-(int)data;
    	String data1String = Integer.toOctalString(data1);
    	double rational=0;
    	if ((data-(int)data)!=0){
    		for (int i=0;i<4;i++)
    			if ((data2*8)>=1){
    				rational = rational+0.1*Math.floor(data2*8)*Math.pow(10,-i);
    				data2 = data2-(int)(data2*8);
    			}
    		String rationalString = String.valueOf(rational);
    		char digits[] = rationalString.toCharArray();
    		rationalString = "";
    		for (int i=2;i<digits.length;i++)
    			rationalString = rationalString+String.valueOf(digits[i]);
    		string = data1String+"."+rationalString;
    		return string;
    	}
    	return data1String;
    }
    //十进制转化为十六进制字符串
    public String DecimalToHexString(String string){
    	if (string=="")
    		return string;
    	double data = Double.parseDouble(string);
    	int data1 = (int)data;
    	double data2 = data-(int)data;
    	String data1String = Integer.toHexString(data1);
    	data1String = data1String.toUpperCase();
    	double rational=0;
    	if ((data-(int)data)!=0){
    		for (int i=0;i<4;i++)
    			if ((data2*16)>=1){
    				rational = rational+0.1*Math.floor(data2*16)*Math.pow(10,-i);
    				data2 = data2-(int)(data2*16);
    			}
            String rationalString = String.valueOf(rational);
    		char digits[] = rationalString.toCharArray();
    		rationalString = "";
    		for (int i=2;i<digits.length;i++)
    			rationalString = rationalString+String.valueOf(digits[i]);
    		string = data1String+"."+rationalString;
    		return string;
    	}
    	return data1String;
    }
    
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?