简体   繁体   English

将字符串数组转换为int

[英]convert string array to int

I am trying to convert a array with text and numbers to an int. 我试图将带有文本和数字的数组转换为int。

the array separated : 数组separated

  • separated[0] some text 分隔[0]一些文本
  • separated[1] 1 分开的[1] 1
  • separated[2] some more text 分隔[2]还有一些文本

What I want is that the [1] ends up being a int. 我想要的是[1]最终是一个整数。

I tried: 我试过了:

int logSetting = Integer.parseInt(String.valueOf(separated));

and

int logSetting = Integer.parseInt(String.valueOf(separated[1]));

Both made the app crash 两者都使应用程序崩溃

 09-16 09:57:30.865: E/AndroidRuntime(27938): FATAL EXCEPTION: main 09-16 09:57:30.865: E/AndroidRuntime(27938): Process: my.project, PID: 27938 09-16 09:57:30.865: E/AndroidRuntime(27938): java.lang.NumberFormatException: Invalid int: 

"[Ljava.lang.String;@42b273f0" “ [Ljava.lang.String; @ 42b273f0”

 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.invalidInt(Integer.java:137) 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parse(Integer.java:374) 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parseInt(Integer.java:365) 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.Integer.parseInt(Integer.java:331) 09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity.fileReader(MainActivity.java:928) 09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity.logCat(MainActivity.java:944) 09-16 09:57:30.865: E/AndroidRuntime(27938): at my.project.MainActivity$1.run(MainActivity.java:854) 09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Handler.handleCallback(Handler.java:733) 09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Handler.dispatchMessage(Handler.java:95) 09-16 09:57:30.865: E/AndroidRuntime(27938): at android.os.Looper.loop(Looper.java:157) 09-16 09:57:30.865: E/AndroidRuntime(27938): at android.app.ActivityThread.main(ActivityThread.java:5356) 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.reflect.Method.invokeNative(Native Method) 09-16 09:57:30.865: E/AndroidRuntime(27938): at java.lang.reflect.Method.invoke(Method.java:515) 09-16 09:57:30.865: E/AndroidRuntime(27938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 09-16 09:57:30.865: E/AndroidRuntime(27938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 09-16 09:57:30.865: E/AndroidRuntime(27938): at dalvik.system.NativeStart.main(Native Method) 

You can do something like this 你可以做这样的事情

String[] separated=new String[]{"some text ","1","some more text"};
int logSetting = 0;
  for(String i:separated){
     try {
        logSetting = Integer.parseInt(i);
      }catch (NumberFormatException e){
        System.out.println("NumberFormatException \""+i+"\" is not a number");
      }
     }
  System.out.println(logSetting);

Out put: 输出:

 NumberFormatException "some text " is not a number
 NumberFormatException "some more text" is not a number
 1

You're almost there, int logSetting = Integer.parseInt(String.valueOf(separated[1])); int logSetting = Integer.parseInt(String.valueOf(separated[1]));int logSetting = Integer.parseInt(String.valueOf(separated[1])); should just be int logSetting = Integer.parseInt(separated[1]); int logSetting = Integer.parseInt(separated[1]);应该只是int logSetting = Integer.parseInt(separated[1]); . If this doesn't work its probably something else crashing your code. 如果这不起作用,可能是其他原因导致您的代码崩溃。 What error do you get? 你得到什么错误?

Based on your exception which is NumberFormatException , when you try to convert a String to a numeric value, like an int, float, double, long, etc which does not have right format 基于您的NumberFormatException异常,当您尝试将String转换为数值格式(如int,float,double,long等)时,格式不正确

For example: 例如:

public class ConvertStringToNumber
{

  public static void main(String[] args)
  {
    try
    {
      String s = "FOOBAR";
      int i = Integer.parseInt(s); <--this line of code will never be reached
      System.out.println("int value = " + i);
    }
    catch (NumberFormatException nfe)
    {
      nfe.printStackTrace();
    }
  }
  1. Source for the Code 代码的来源
  2. Read more and Another Source 阅读更多和另一个来源

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM