在做一个android上的进制转换器程序,调试的时候出了这个很奇怪的错误,以下是logcat记录:04-09 09:47:42.519: ERROR/Zygote(33): setreuid() failed. errno: 2
04-09 09:47:51.549: ERROR/Zygote(33): setreuid() failed. errno: 17
04-09 09:47:53.189: ERROR/BatteryService(59): usbOnlinePath not found
04-09 09:47:53.189: ERROR/BatteryService(59): batteryVoltagePath not found
04-09 09:47:53.189: ERROR/BatteryService(59): batteryTemperaturePath not found
04-09 09:47:53.219: ERROR/SurfaceFlinger(59): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
04-09 09:48:01.219: ERROR/EventHub(59): could not get driver version for /dev/input/mouse0, Not a typewriter
04-09 09:48:01.229: ERROR/EventHub(59): could not get driver version for /dev/input/mice, Not a typewriter
04-09 09:48:01.590: ERROR/System(59): Failure starting core service
04-09 09:48:01.590: ERROR/System(59): java.lang.SecurityException
04-09 09:48:01.590: ERROR/System(59):     at android.os.BinderProxy.transact(Native Method)
04-09 09:48:01.590: ERROR/System(59):     at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
04-09 09:48:01.590: ERROR/System(59):     at android.os.ServiceManager.addService(ServiceManager.java:72)
04-09 09:48:01.590: ERROR/System(59):     at com.android.server.ServerThread.run(SystemServer.java:184)
04-09 09:48:03.009: ERROR/SoundPool(59): error loading /system/media/audio/ui/Effect_Tick.ogg
04-09 09:48:03.019: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressStandard.ogg
04-09 09:48:03.039: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressSpacebar.ogg
04-09 09:48:03.039: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressDelete.ogg
04-09 09:48:03.049: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressReturn.ogg
04-09 09:48:05.159: ERROR/ThrottleService(59): Could not open GPS configuration file /etc/gps.conf
04-09 09:48:06.609: ERROR/logwrapper(143): executing /system/bin/tc failed: No such file or directory
04-09 09:48:06.699: ERROR/logwrapper(145): executing /system/bin/tc failed: No such file or directory
04-09 09:48:06.929: ERROR/logwrapper(148): executing /system/bin/tc failed: No such file or directory
04-09 09:48:21.147: ERROR/HierarchicalStateMachine(59): TetherMaster - unhandledMessage: msg.what=3以下是源代码,分为三个java文件:
第一个:Switch.javapackage com.Elzsx.Switch;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class Switch extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private EditText Number = null;
private EditText FromBinary = null;
private EditText ToBinary = null;
private Button SwitchButton = null;
private Button ExitButton = null; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Number = (EditText) findViewById(R.id.Number_EditText);
FromBinary = (EditText) findViewById(R.id.FromBinary);
ToBinary = (EditText) findViewById(R.id.ToBinary);
SwitchButton = (Button) findViewById(R.id.Switch_Button);
SwitchButton.setOnClickListener(this);
ExitButton = (Button) findViewById(R.id.Exit_Button);
ExitButton.setOnClickListener(this);
}

protected void onResume() {
super.onResume();
}

protected void onPause() {
super.onPause();
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.Switch_Button:
Intent i = new Intent(this, Result.class);
String NumberStr = Number.getText().toString();
String FromBinaryStr = FromBinary.getText().toString();
String ToBinaryStr = ToBinary.getText().toString();
i.putExtra("Num", NumberStr);
i.putExtra("From", FromBinaryStr);
i.putExtra("To", ToBinaryStr);
startActivity(i);
break;
// More buttons go here (if any) ...
case R.id.Exit_Button:
finish();
break;
}
}
}

解决方案 »

  1.   

    第二个:Result.javapackage com.Elzsx.Switch;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;public class Result extends Activity{ @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.result);
    Intent intent = new Intent();
    String Number = intent.getStringExtra("Num");
    String FromBinary = intent.getStringExtra("From");
    String ToBinary = intent.getStringExtra("To");
    TextView result = (TextView)findViewById(R.id.Result_content);
    try {
    result.setText(Switch(FromBinary,ToBinary,Number));
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }



    public String Switch(String FromBinary,String ToBinary,String Number)throws Exception{ 
        Calculate cl = new Calculate(FromBinary,ToBinary,Number);
        //输入无误
            if(!cl.checkInputNumIsOK()){
             return "Wrong Input!";
            }
            String returnLeftPart; //输入数的整数部分  
            String returnRightPart; //输入数的小数部分  
            //分别取出数的左面和右面  
            returnLeftPart = cl.returnWantPart(Number,"left"); //取出输入数的整数部分  
            returnRightPart = cl.returnWantPart(Number,"right"); //取出输入数的小数部分  
      
            String anyChangedToIntSystem; //用于接收输入数的整数部分转换后的结果  
            String anyChangedToLessSystem; //用于接收输入数的小数部分转换后的结果  
            anyChangedToIntSystem = cl.intToTenSystem();  
            anyChangedToLessSystem = cl.lessToTenSystem();  
      
            double leftNum = Double.parseDouble(anyChangedToIntSystem);  
            double rightNum = Double.parseDouble(anyChangedToLessSystem);  
            double totalNum = leftNum + rightNum; //拼合结果  
            System.out.println(Number + "由" + FromBinary + "到10进制的结果是:" +  
                               String.valueOf(totalNum));  
      
            //十进制到任意进制的转换temToAnySystem_Less  
            String tenChangedToAnySystemInt = "";  
            String tenChangedToAnySystemLess = "";  
            tenChangedToAnySystemInt = cl.tenToAnySystem_Int(anyChangedToIntSystem);  
            tenChangedToAnySystemLess = cl.tenToAnySystem_Less(anyChangedToLessSystem);  
            System.out.println(Number + "由" + FromBinary + "到" + ToBinary +  
                               "进制的结果是:" + tenChangedToAnySystemInt + "." + tenChangedToAnySystemLess); 
            return tenChangedToAnySystemInt + "." + tenChangedToAnySystemLess;
    }
    }
      

  2.   

    第三个:Calculate.javapackage com.Elzsx.Switch;import java.util.StringTokenizer;public class Calculate { private String FromBinary = null;
    private String ToBinary = null;
    private String Number = null; public Calculate(String FB, String TB, String Num) {
    FromBinary = FB;
    ToBinary = TB;
    Number = Num;
    } // 转换方法:先将任意进制数转换为十进制数,再将十进制数转换为指定进制数(浮点数)
    /*
     * 1、任意进制转换为10进制的转换 分别对整数和小数部分进行转换,再将分别转换后的结果进行拼合,利用相乘相加的原则
     * 整数部分:(如111的二进制到十进制就是:1*pow(2,2)+1*pow(2,1)+1*pow(2,0)) 小数部分:利用相乘相加的原则
     * 2、10进制转换到任意进制的转换 分别对整数和小数部分进行转换,再将分别转换后的结果进行拼合 整数部分:利用相除取余的原则
     * 小数部分:利用相乘取整的原则
     */ // *****************************任意进制到十进制的转换***************************** // 任意进制到十进制的转换 // 保证输入的数与进制相配
    boolean checkInputNumIsOK() {
    int i = 0;
    for (; i < Number.length(); i++) {
    String Num = Number.substring(i, i + 1);
    if (Integer.parseInt(Num) > Integer.parseInt(FromBinary) - 1) {
    return false;
    }
    }
    return true;
    } // 对于十进制以上的进制,由取得的字符返回相应的数字
    String letterToInteger(String tChar) {
    int gotNum = 0;
    int kg = 0; // 确定前面该字符是不是已经赋值,这就是使用if语句所留下的后症 - -b
    String S;
    if (tChar.equals("A")) {
    gotNum = 10;
    kg = 1;
    } else if (tChar.equals("B")) {
    gotNum = 11;
    kg = 1;
    } else if (tChar.equals("C")) {
    gotNum = 12;
    kg = 1;
    } else if (tChar.equals("D")) {
    gotNum = 13;
    kg = 1;
    } else if (tChar.equals("E")) {
    gotNum = 14;
    kg = 1;
    } else if (tChar.equals("F")) {
    gotNum = 15;
    kg = 1;
    } else if (tChar.equals("G")) {
    gotNum = 16;
    kg = 1;
    } else if (tChar.equals("H")) {
    gotNum = 17;
    kg = 1;
    } else if (tChar.equals("I")) {
    gotNum = 18;
    kg = 1;
    } else if (tChar.equals("J")) {
    gotNum = 19;
    kg = 1;
    } else if (tChar.equals("K")) {
    gotNum = 20;
    kg = 1;
    } else if (tChar.equals("L")) {
    gotNum = 21;
    kg = 1;
    } else if (tChar.equals("M")) {
    gotNum = 22;
    kg = 1;
    } else if (tChar.equals("O")) {
    gotNum = 23;
    kg = 1;
    } else if (tChar.equals("P")) {
    gotNum = 24;
    kg = 1;
    } else if (tChar.equals("Q")) {
    gotNum = 25;
    kg = 1;
    } else if (tChar.equals("R")) {
    gotNum = 26;
    kg = 1;
    } else if (tChar.equals("S")) {
    gotNum = 27;
    kg = 1;
    } else if (tChar.equals("T")) {
    gotNum = 28;
    kg = 1;
    } else if (tChar.equals("U")) {
    gotNum = 29;
    kg = 1;
    } else if (tChar.equals("V")) {
    gotNum = 30;
    kg = 1;
    } else if (tChar.equals("W")) {
    gotNum = 31;
    kg = 1;
    } else if (tChar.equals("X")) {
    gotNum = 32;
    kg = 1;
    } else if (tChar.equals("Y")) {
    gotNum = 33;
    kg = 1;
    } else if (tChar.equals("Z")) {
    gotNum = 34;
    kg = 1;
    } else if (kg == 0) {
    gotNum = Integer.parseInt(tChar);
    }
    S = String.valueOf(gotNum);
    return S;
    } // 浮点数的整数部份转换为十进制 String intToTenSystem() throws Exception {
    String strNum = Number.toUpperCase(); // 全部转换为大写,方便字符到数字的转换
    int JZ = Integer.parseInt(FromBinary);// 获得原数进制
    double longNum = 0;
    int len = strNum.length(); // 取得字符串的长度
    int tInt = 0; // 初使化数组位置为0
    int gotNum = 0; // 一个一个字符取出所对应的数字
    while (len > 0) { // 如果没有将字符串的字符转换完,就继续
    String tChar = strNum.substring(tInt, tInt + 1); // 一个一个字符的取
    gotNum = Integer.parseInt(letterToInteger(tChar));
    longNum = longNum + gotNum * (Math.pow(JZ, len - 1));
    tInt++;
    len--; }
    return String.valueOf(longNum);
    } // 浮点数小数部份转换为十进制 String lessToTenSystem() throws Exception {
    String strNum = Number.toUpperCase();
    int JZ = Integer.parseInt(FromBinary);// 获得原数进制
    double longNum = 0;
    int len = strNum.length(); // 取得字符的长度
    int tInt = 0; // 取第tInt个字符
    int gotNum = 0; // 取出的字符转换为数字
    int cfInt = -1; // 多少次次方
    while (len > 0) {
    String tChar = strNum.substring(tInt, tInt + 1); // 一个一个字符的取
    gotNum = Integer.parseInt(letterToInteger(tChar));
    // 保存出小数部份从对应的进制到十进制的总值
    longNum = longNum + gotNum * (Math.pow(JZ, cfInt)); // 关键算法
    tInt++; // 字符串中位置加一
    len--; // 字符串总长度减一
    cfInt--;
    }
    return String.valueOf(longNum);
    } // 返回一个浮点数的整数或者是小数部份
    String returnWantPart(String doubleNum, String whichPart)  
        throws Exception  
      {  
        String strNum = doubleNum;  
        String leftStr;  
        String rightStr;  
        //如果输入的是一个浮点数  
        if (strNum.indexOf(".") != -1)  
        {  
          StringTokenizer fenxi = new StringTokenizer(strNum, ".");  
          leftStr = fenxi.nextToken();  
          rightStr = fenxi.nextToken();  
        }  
        else  
        { //如果输入的是一个整数  
          leftStr = strNum;  
          rightStr = "0";  
        }  
        String returnStr = "";  
        if (whichPart.equals("left"))  
          returnStr = leftStr;  
        else if (whichPart.equals("right"))  
          returnStr = rightStr;  
        return returnStr;  
      }   // *****************************任意进制到十进制的转换***************************** // *****************************十进制到任意进制的转换***************************** String tenToAnySystem_Int(String strInt) { // 因为由任意进制到十进制的转换结果为"整数部分.小数部份"
    // 也就是分成整数和小数部份分别转换
    // 此函数完成的功能是十进制的整数部分到任意进制的转换
    try {
    // 取出整数部份
    strInt = returnWantPart(strInt,"left");
    } catch (Exception e) {
    e.printStackTrace();
    }
    int JZ = Integer.parseInt(ToBinary);
    long intStr = Long.parseLong(strInt);
    long[] result = new long[50]; // 保存相除的余数
    String resultStr = "";
    int i = 0; // 数组的下标
    while (intStr != 0) {
    result[i] = intStr % JZ; // 取出余数
    // 现数为减去余数的数整除进制
    intStr = intStr - result[i];
    intStr = intStr / JZ;
    i++; // 数组下标增加一
    }
    // 将数组全部反序排列,并返回结果
    for (int j1 = 0, j2 = i - 1; j1 < (i / 2); j1++, j2--) {
    long temp = 0;
    temp = result[j1];
    result[j1] = result[j2];
    result[j2] = temp;
    }
    for (int j = 0; j < i; j++) {
    resultStr = resultStr + intToLetter(result[j]); }
    return resultStr; } // 此函数完成的功能是十进制的小数部分到任意进制的转换 String tenToAnySystem_Less(String strLess) {
    int JZ = Integer.parseInt(ToBinary);
    double T = 0;
    T = Double.parseDouble(strLess);
    String resultStr = "";
    String strInt = "";
    // 精度取到小数点后面6位为止
    int JingDu = 0;
    int i = 0; // 数组下标
    int[] result = new int[50];
    for (int j = 0; j < 50; j++)
    // 将数组初使化
    result[j] = 0;
    try {
    while (JingDu <= 6 && T > 0.000001) {
    double tNum = 0;
    tNum = T * JZ;
    if (tNum > 1) { // 取出整数部份
    try {
    strInt = returnWantPart(String.valueOf(tNum), "left");
    } catch (Exception e) {
    e.printStackTrace();
    }
    result[i] = Integer.parseInt(strInt);
    T = tNum - result[i]; // 将当前数减去取出来的数 ,用于下一次循环
    } else {
    // 如果整数小于零,那么整数部分就是0
    result[i] = 0;
    }
    JingDu++;
    i++; }
    } catch (Exception e) {
    e.printStackTrace();
    }
    for (int j = 0; j < i; j++)
    resultStr = resultStr + String.valueOf(result[j]);
    if (i == 0)
    return "0";
    else
    return resultStr; } // 将取得的数字转换为相应的字母 String intToLetter(long num) {
    String result = "";
    String S = "";
    if (0 <= num && num <= 9)
    result = String.valueOf(num);
    else if (num > 9) {
    S = String.valueOf(num); // 将长整型转换为字符串型
    switch (Integer.parseInt(S)) // 将字符串型转换为整型
    {
    case 10:
    result = "A";
    break;
    case 11:
    result = "B";
    break;
    case 12:
    result = "C";
    break;
    case 13:
    result = "D";
    break;
    case 14:
    result = "E";
    break;
    case 15:
    result = "F";
    break;
    case 16:
    result = "G";
    break;
    case 17:
    result = "H";
    break;
    case 18:
    result = "I";
    break;
    case 19:
    result = "G";
    break;
    case 20:
    result = "K";
    break;
    case 21:
    result = "L";
    break;
    case 22:
    result = "M";
    break;
    case 23:
    result = "N";
    break;
    case 24:
    result = "O";
    break;
    case 25:
    result = "P";
    break;
    case 26:
    result = "Q";
    break;
    case 27:
    result = "R";
    break;
    case 28:
    result = "S";
    break;
    case 29:
    result = "T";
    break;
    case 30:
    result = "U";
    break;
    case 31:
    result = "V";
    break;
    case 32:
    result = "W";
    break;
    case 33:
    result = "X";
    break;
    case 34:
    result = "Y";
    break;
    case 35:
    result = "Z";
    break;
    }
    }
    return result;
    }
    // *****************************十进制到任意进制的转换*****************************}
      

  3.   


    // 浮点数小数部份转换为十进制 String lessToTenSystem() throws Exception {
    String strNum = Number.toUpperCase();
    int JZ = Integer.parseInt(FromBinary);// 获得原数进制
    double longNum = 0;
    int len = strNum.length(); // 取得字符的长度
    int tInt = 0; // 取第tInt个字符
    int gotNum = 0; // 取出的字符转换为数字
    int cfInt = -1; // 多少次次方
    while (len > 0) {
    String tChar = strNum.substring(tInt, tInt + 1); // 一个一个字符的取
    gotNum = Integer.parseInt(letterToInteger(tChar));
    // 保存出小数部份从对应的进制到十进制的总值
    longNum = longNum + gotNum * (Math.pow(JZ, cfInt)); // 关键算法
    tInt++; // 字符串中位置加一
    len--; // 字符串总长度减一
    cfInt--;
    }
    return String.valueOf(longNum);
    } // 返回一个浮点数的整数或者是小数部份
    String returnWantPart(String doubleNum, String whichPart)  
        throws Exception  
      {  
        String strNum = doubleNum;  
        String leftStr;  
        String rightStr;  
        //如果输入的是一个浮点数  
        if (strNum.indexOf(".") != -1)  
        {  
          StringTokenizer fenxi = new StringTokenizer(strNum, ".");  
          leftStr = fenxi.nextToken();  
          rightStr = fenxi.nextToken();  
        }  
        else  
        { //如果输入的是一个整数  
          leftStr = strNum;  
          rightStr = "0";  
        }  
        String returnStr = "";  
        if (whichPart.equals("left"))  
          returnStr = leftStr;  
        else if (whichPart.equals("right"))  
          returnStr = rightStr;  
        return returnStr;  
      }   // *****************************任意进制到十进制的转换***************************** // *****************************十进制到任意进制的转换***************************** String tenToAnySystem_Int(String strInt) { // 因为由任意进制到十进制的转换结果为"整数部分.小数部份"
    // 也就是分成整数和小数部份分别转换
    // 此函数完成的功能是十进制的整数部分到任意进制的转换
    try {
    // 取出整数部份
    strInt = returnWantPart(strInt,"left");
    } catch (Exception e) {
    e.printStackTrace();
    }
    int JZ = Integer.parseInt(ToBinary);
    long intStr = Long.parseLong(strInt);
    long[] result = new long[50]; // 保存相除的余数
    String resultStr = "";
    int i = 0; // 数组的下标
    while (intStr != 0) {
    result[i] = intStr % JZ; // 取出余数
    // 现数为减去余数的数整除进制
    intStr = intStr - result[i];
    intStr = intStr / JZ;
    i++; // 数组下标增加一
    }
    // 将数组全部反序排列,并返回结果
    for (int j1 = 0, j2 = i - 1; j1 < (i / 2); j1++, j2--) {
    long temp = 0;
    temp = result[j1];
    result[j1] = result[j2];
    result[j2] = temp;
    }
    for (int j = 0; j < i; j++) {
    resultStr = resultStr + intToLetter(result[j]); }
    return resultStr; } // 此函数完成的功能是十进制的小数部分到任意进制的转换 String tenToAnySystem_Less(String strLess) {
    int JZ = Integer.parseInt(ToBinary);
    double T = 0;
    T = Double.parseDouble(strLess);
    String resultStr = "";
    String strInt = "";
    // 精度取到小数点后面6位为止
    int JingDu = 0;
    int i = 0; // 数组下标
    int[] result = new int[50];
    for (int j = 0; j < 50; j++)
    // 将数组初使化
    result[j] = 0;
    try {
    while (JingDu <= 6 && T > 0.000001) {
    double tNum = 0;
    tNum = T * JZ;
    if (tNum > 1) { // 取出整数部份
    try {
    strInt = returnWantPart(String.valueOf(tNum), "left");
    } catch (Exception e) {
    e.printStackTrace();
    }
    result[i] = Integer.parseInt(strInt);
    T = tNum - result[i]; // 将当前数减去取出来的数 ,用于下一次循环
    } else {
    // 如果整数小于零,那么整数部分就是0
    result[i] = 0;
    }
    JingDu++;
    i++; }
    } catch (Exception e) {
    e.printStackTrace();
    }
    for (int j = 0; j < i; j++)
    resultStr = resultStr + String.valueOf(result[j]);
    if (i == 0)
    return "0";
    else
    return resultStr; } // 将取得的数字转换为相应的字母 String intToLetter(long num) {
    String result = "";
    String S = "";
    if (0 <= num && num <= 9)
    result = String.valueOf(num);
    else if (num > 9) {
    S = String.valueOf(num); // 将长整型转换为字符串型
    switch (Integer.parseInt(S)) // 将字符串型转换为整型
    {
    case 10:
    result = "A";
    break;
    case 11:
    result = "B";
    break;
    case 12:
    result = "C";
    break;
    case 13:
    result = "D";
    break;
    case 14:
    result = "E";
    break;
    case 15:
    result = "F";
    break;
    case 16:
    result = "G";
    break;
    case 17:
    result = "H";
    break;
    case 18:
    result = "I";
    break;
    case 19:
    result = "G";
    break;
    case 20:
    result = "K";
    break;
    case 21:
    result = "L";
    break;
    case 22:
    result = "M";
    break;
    case 23:
    result = "N";
    break;
    case 24:
    result = "O";
    break;
    case 25:
    result = "P";
    break;
    case 26:
    result = "Q";
    break;
    case 27:
    result = "R";
    break;
    case 28:
    result = "S";
    break;
    case 29:
    result = "T";
    break;
    case 30:
    result = "U";
    break;
    case 31:
    result = "V";
    break;
    case 32:
    result = "W";
    break;
    case 33:
    result = "X";
    break;
    case 34:
    result = "Y";
    break;
    case 35:
    result = "Z";
    break;
    }
    }
    return result;
    }
    // *****************************十进制到任意进制的转换*****************************}
      

  4.   

    我和你的错误差不多,不过我是在做map的时候报错,map可以显示,但是我点击send,发送坐标之后,就报错了,然后模拟器黑屏。
      

  5.   


    代码太长了 看不下去 
    errno 2和17 倒是有据可依