【问题标题】:Convert array elements from string to an integer将数组元素从字符串转换为整数
【发布时间】:2015-01-04 12:26:00
【问题描述】:

我正在尝试计算存储在数组中的值,这是我的代码:

    public void printScores()
{

    String sep = ":";
    File inputfile = new File ("P:/SD/Assignment1/fbScores.txt");

        String [] stringArr;
        String line = "";



        try {
            Scanner filescan = new Scanner(inputfile);
            while(filescan.hasNext())
            {
                line = filescan.nextLine();


                stringArr = line.split(sep);
                if(stringArr.length ==  4)
                {

                    System.out.println(stringArr[0]+"\t [" +stringArr[2]+"]\t|" + stringArr[1]+"\t["+ stringArr[3]+" ]\n");

                }

                else
                {
                    throw new IllegalArgumentException("String " + line + " does not contain " + sep);
                }



             }
            filescan.close();


        }
            catch (FileNotFoundException e)
            {
                System.out.println("problem " +e.getMessage());
            }

        }
    public void totalGoals()
    {
        int count;
        for (int i = 0; i<stringArr.length; i++)
        {
            //int num[i] = Integer.parseInt(stringArr);

        }
    }

}

基本上我只想将存储在 [2] 和 [3] 中的数字相加,底部的 totalGoals 方法是我开始的地方,但不知道如何从字符串更改为整数,任何帮助将不胜感激!

更新:

公共无效总目标() {

        int[] num = new int[stringArr.length]; 
        int count = 0;
        for (int i = 0; i<stringArr.length; i++)
        {
            num[i] = Integer.parseInt(stringArr[i]);
            count = count + num[i];
            System.out.println(count);
        }
    }

【问题讨论】:

    标签: java string integer converter


    【解决方案1】:

    您想单独解析每个字符串 - 您似乎正在尝试处理整个数组

    int[] num = new int[stringArr.length]; //don't forget to declare your num[] array
    
    for (int i = 0; i<stringArr.length; i++)
    {
        num[i] = Integer.parseInt(stringArr[i]); // stringArr[i] instead of stringArr
    }
    

    请注意,当您将其从 for loop 格式中拆分出来时,该代码实际上在做什么。

    int[] num = new int[4];
    num[0] = Integer.parseInt(stringArr[0]); //the for loop is starting at 0 and stopping 
    num[1] = Integer.parseInt(stringArr[1]); //when it hits 4
    num[2] = Integer.parseInt(stringArr[2]);
    num[3] = Integer.parseInt(stringArr[3]);
    

    事实上,您只需要23.. 并且您需要做的就是将它们加在一起。您已经有一个 count 变量可以用来代替 num

    假设您只想循环遍历 2 和 3...查看for loop

    for (int i = 0; i < stringArr.length; i++)
    
    int i = 0             //your loop is starting at 0
    i < stringArr.length; //its ending when i is the array's length (should be 4 judging by your other code)
    i++                   // i increases by 1 at the end of each time through
    

    所以如果01 没用,请尝试使用int i = 2

    你有一个count 变量。也许它应该从 0.. 开始,而不是设置 num 变量,您可以将值添加到您的 count 变量中。


    关于你的方法..它本身应该可以工作。

    我也不确定哪一行是line 73

    如果是第一行:int[] num = new int[stringArr.length]; 那么您的 stringArr 不存在(对于 this 方法)或者您的 stringArr 未初始化(同样,对于此方法)

    看看你给我看的代码,我猜问题出在第一行。

    public void printScores() {
        //other code
    
        String[] stringArr;
    
        //other code
    }
    
    public void totalGoals() {
        int[] num = new int[stringArr.length]; 
        int count = 0;
        for (int i = 0; i<stringArr.length; i++)
        {
            num[i] = Integer.parseInt(stringArr[i]);
            count = count + num[i];
            System.out.println(count);
        }
    }
    

    像这样简单地完成,你甚至无法编译。对于totalGoalsstringArr 将不存在。这两种方法是分开的,不能“看到”对方的变量。

    如果您的代码如下所示 - 那么您将两次声明 stringArr 并且您有两个单独的变量命名相同!

    {
        String[] stringArr; //This is what totalGoals would be using - it is never assigned
    
        public void printScores() {
            String[] stringArr; //This one is used and assigned within printScores
                                //but totalGoals cannot see/use it
        }
    
        public void totalGoals() {
    
        }
    }
    

    【讨论】:

    • 酷,所以这已将所有元素转换为整数,但是我似乎无法理解如何进行循环,因此它会计算数字
    • 你已经开始循环了;)我会添加一些应该有帮助的细节
    • 谢谢! Java 新手,感谢您的帮助
    • 我试过像你说的那样调整方法,但是当我在主方法“readScores.totalGoals();”中调用它时它返回: main.main(main.java:14) 处 readFile.totalGoals(readFile.java:73) 处的线程“main”java.lang.NullPointerException 中的异常
    • 已更新 - 尝试使其计数在循环并打印时添加 num[i],但返回此错误:readFile 处的线程“main”java.lang.NullPointerException 中的异常.totalGoals(readFile.java:73) 抱歉,如果我遗漏了什么
    【解决方案2】:

    使用 integer.parseint 将字符串解析为 int

         if(stringArr.length ==  4)
                            {
            for(int i=0;i<stringArr.length;i++)
    {
    
        int    c = Integer.parseInt(stringArr[2])+ Integer.parseInt(stringArr[3]);
    
    
            }
                            }
    

    【讨论】:

    • 大约有 15 行都有 stringArr[2] 和 [3],我需要把它放到一个循环中来计算每行的 [2] 和 [3],我应该只是将其引入循环?
    【解决方案3】:

    使用Integer.parseInt(String s)Integer.parseInt(String s, int radix) 将您的Strings 转换为Integers 或原始ints。

    例如:

    try {
        String s = "42";
        int i = Integer.parseInt(s);
    }
    catch (NumberFormatException nfe) {
        nfe.printStackTrace();
    }
    

    如果更适合您的上下文,您也可以使用 Scanner.nextInt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2015-08-02
      • 2017-12-22
      • 1970-01-01
      • 2015-07-04
      • 2018-05-29
      • 2018-06-15
      • 1970-01-01
      相关资源
      最近更新 更多