“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";38“;

“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";38“;,java,Java,对于一项作业,我几乎准备好了,但似乎无法克服错误。。 该文件包含items.txt数据 12345,球头锤,25,18.75 56789,十字螺丝刀,120,10.95 24680,爪形锤,35,15.98 13579,梅花扳手,48,20.35 28967,六角扳手,70,19.98 文件activity.txt包含数据 D、 12345,0 R、 12345100 S、 12345,45 一次又一次的错误告诉了我错误 Exception in t

对于一项作业,我几乎准备好了,但似乎无法克服错误。。 该文件包含items.txt数据

12345,球头锤,25,18.75

56789,十字螺丝刀,120,10.95

24680,爪形锤,35,15.98

13579,梅花扳手,48,20.35

28967,六角扳手,70,19.98

文件activity.txt包含数据

D、 12345,0

R、 12345100

S、 12345,45

一次又一次的错误告诉了我错误

                       Exception in thread "main" java.lang.NumberFormatException: For input string: " 38"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.parseInt(Integer.java:615)
at InventoryItemTest.main(InventoryItemTest.java:21)
C:\Users\Noah\AppData\Local\NetBeans\Cache\8.2\executor snippets\run.xml:53:Java返回:1 生成失败(总时间:0秒)

不起作用的代码

    import java.io.*;
    import java.text.NumberFormat;
    import java.time.format.DateTimeFormatter;
    import java.util.Calendar;
    import java.util.Scanner;

     public class InventoryItemTest {
     private static final int INVENTORY_SIZE=100;
     public static void main(String[] args)
            {
               InventoryItem[] inventoryItems= new 
               InventoryItem[INVENTORY_SIZE];
                        int i= 0;
                 //Process the file
                 try {
                                                                                          Scanner scanfile = new Scanner(new File("items.txt"));

        while (scanfile.hasNextLine())
        {
            String[] lines = scanfile.nextLine().split(",");
            if(Integer.parseInt(lines[0])>=20000 && Integer.parseInt(lines[0])<=79999) { 
                inventoryItems[i] = new InventoryItem(Integer.parseInt(lines[0]), lines[1], Integer.parseInt(lines[2]), Double.parseDouble(lines[3]));
                i++;
           }
        }
        System.out.println(i+" items has been created.");
        scanfile.close();
    }
    catch (FileNotFoundException ex)
    {
        System.err.println("FILE NOT FOUND!!!!");
    }

    try
    {
        int processedCount=0,skippedCount=0;
        Scanner scanFile = new Scanner(new File("activity.txt"));

        while (scanFile.hasNextLine())
        {
            String[] tokens = scanFile.nextLine().split(",");
            int id = Integer.parseInt(tokens[1]);
            System.out.println(id);
            int q = Integer.parseInt(tokens[2]);
            for (int j = 0; j <i ; j++) {
                if(id==inventoryItems[j].getItemNumber())
                {
                    processedCount++;
                    switch (tokens[0])
                    {
                        case "D":
                            inventoryItems[j].setQuantity(q);
                            break;
                        case "R":
                            inventoryItems[j].receiveItems(q);
                            break;
                        case "S":
                            inventoryItems[j].shipItems(q);
                            break;
                    }
                }
                skippedCount++;
            }
        }
        System.out.println("Total Number of received Process: "+processedCount);
        System.out.println("Number of records skipped: "+skippedCount);
        scanFile.close();
        PrintWriter writer = new PrintWriter(new FileWriter("report.txt"));
        //Preparing Report
        double grandTotal=0;
        double value =0;

        writer.println("Joe E. Bagadonuts for the Albatross Company, Ltd.\nPrepared On: "+ Calendar.getInstance().getTime());
        writer.println("\t\tI N V E N T O R Y  R E P O R T\nInventory Item");
        writer.println(String.format("%5s %19s %10s %10s %10s","Number","Description","Quantity","Unit Price","Value"));
        writer.println(String.format("%5s %19s %10s %10s %10s","------","-----------","--------","----------","------"));
        for (int j = 0; j <i ; j++) {
            value = inventoryItems[j].getQuantity()*inventoryItems[j].getUnitCost();
            grandTotal+=value;
            writer.println(String.format("%5s %19s %10s %11s %11s",inventoryItems[j].getItemNumber(),inventoryItems[j].getDescription(),inventoryItems[j].getQuantity(),NumberFormat.getCurrencyInstance().format(inventoryItems[j].getUnitCost()),NumberFormat.getCurrencyInstance().format(value)));

        }
        writer.println(String.format("%5s %19s %10s %10s %10s"," "," "," ","","==================="));
        writer.println(String.format("%5s %19s %10s %11s %11s"," "," "," ","Total ", NumberFormat.getCurrencyInstance().format(grandTotal)));

        writer.close();
    }
    catch (FileNotFoundException ex)
    {
        System.err.println("File not found...");
    } catch (IOException e) {
        System.err.println("Error in creating report");
    }
}
import java.io.*;
导入java.text.NumberFormat;
导入java.time.format.DateTimeFormatter;
导入java.util.Calendar;
导入java.util.Scanner;
公共类InventoryItemTest{
私有静态最终整数库存大小=100;
公共静态void main(字符串[]args)
{
InventoryItem[]inventoryItems=新建
存货项目[存货大小];
int i=0;
//处理文件
试一试{
扫描仪扫描文件=新扫描仪(新文件(“items.txt”);
while(scanfile.hasNextLine())
{
String[]line=scanfile.nextLine().split(“,”);
如果(Integer.parseInt(lines[0])>=20000&&Integer.parseInt(lines[0])在访问lines[]数组时使用trim()

 if (Integer.parseInt(lines[0].trim().trim()) >= 20000 && Integer.parseInt(lines[0].trim()) <= 79999)
 {
      inventoryItems[i] = new InventoryItem(Integer.parseInt(lines[0].trim()), lines[1].trim(), Integer.parseInt(lines[2].trim()), Double.parseDouble(lines[3].trim()));
      i++;
 }

if(Integer.parseInt(lines[0].trim().trim())>=20000&&Integer.parseInt(lines[0].trim())您会遇到该异常,因为您试图解析的数字有空格。
trim()
是java中的一个函数,用于删除字符串前后的空格。阅读了解有关trim的更多信息

import java.io.*;
import java.text.NumberFormat;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Scanner;

public class InventoryItemTest {
    private static final int INVENTORY_SIZE=100;
    public static void main(String[] args)
    {
        InventoryItem[] inventoryItems= new
                InventoryItem[INVENTORY_SIZE];
        int i= 0;
        //Process the file
        try {
            Scanner scanfile = new Scanner(new File("items.txt"));

            while (scanfile.hasNextLine())
            {
                String[] lines = scanfile.nextLine().split(",");
                int i1 = Integer.parseInt(lines[0].trim());
                if(i1>=20000 && i1<=79999) {
                    inventoryItems[i] = new InventoryItem(i1, lines[1], Integer.parseInt(lines[2].trim()), Double.parseDouble(lines[3].trim()));
                    i++;
                }
            }
            System.out.println(i+" items has been created.");
            scanfile.close();
        }
        catch (FileNotFoundException ex)
        {
            System.err.println("FILE NOT FOUND!!!!");
        }

        try
        {
            int processedCount=0,skippedCount=0;
            Scanner scanFile = new Scanner(new File("activity.txt"));

            while (scanFile.hasNextLine())
            {
                String[] tokens = scanFile.nextLine().split(",");
                int id = Integer.parseInt(tokens[1].trim());
                System.out.println(id);
                int q = Integer.parseInt(tokens[2].trim());
                for (int j = 0; j <i ; j++) {
                    if(id==inventoryItems[j].getItemNumber())
                    {
                        processedCount++;
                        switch (tokens[0])
                        {
                            case "D":
                                inventoryItems[j].setQuantity(q);
                                break;
                            case "R":
                                inventoryItems[j].receiveItems(q);
                                break;
                            case "S":
                                inventoryItems[j].shipItems(q);
                                break;
                        }
                    }
                    skippedCount++;
                }
            }
            System.out.println("Total Number of received Process: "+processedCount);
            System.out.println("Number of records skipped: "+skippedCount);
            scanFile.close();
            PrintWriter writer = new PrintWriter(new FileWriter("report.txt"));
            //Preparing Report
            double grandTotal=0;
            double value =0;

            writer.println("Joe E. Bagadonuts for the Albatross Company, Ltd.\nPrepared On: "+ Calendar.getInstance().getTime());
            writer.println("\t\tI N V E N T O R Y  R E P O R T\nInventory Item");
            writer.println(String.format("%5s %19s %10s %10s %10s","Number","Description","Quantity","Unit Price","Value"));
            writer.println(String.format("%5s %19s %10s %10s %10s","------","-----------","--------","----------","------"));
            for (int j = 0; j <i ; j++) {
                value = inventoryItems[j].getQuantity()*inventoryItems[j].getUnitCost();
                grandTotal+=value;
                writer.println(String.format("%5s %19s %10s %11s %11s",inventoryItems[j].getItemNumber(),inventoryItems[j].getDescription(),inventoryItems[j].getQuantity(),NumberFormat.getCurrencyInstance().format(inventoryItems[j].getUnitCost()),NumberFormat.getCurrencyInstance().format(value)));

            }
            writer.println(String.format("%5s %19s %10s %10s %10s"," "," "," ","","==================="));
            writer.println(String.format("%5s %19s %10s %11s %11s"," "," "," ","Total ", NumberFormat.getCurrencyInstance().format(grandTotal)));

            writer.close();
        }
        catch (FileNotFoundException ex)
        {
            System.err.println("File not found...");
        } catch (IOException e) {
            System.err.println("Error in creating report");
        }
    }
import java.io.*;
导入java.text.NumberFormat;
导入java.time.format.DateTimeFormatter;
导入java.util.Calendar;
导入java.util.Scanner;
公共类InventoryItemTest{
私有静态最终整数库存大小=100;
公共静态void main(字符串[]args)
{
InventoryItem[]inventoryItems=新建
存货项目[存货大小];
int i=0;
//处理文件
试一试{
扫描仪扫描文件=新扫描仪(新文件(“items.txt”);
while(scanfile.hasNextLine())
{
String[]line=scanfile.nextLine().split(“,”);
int i1=Integer.parseInt(行[0].trim());

如果(i1>=20000&&i1在读取items.txt时调用InventoryItemTest中的parseInt,尝试使用下面的方法

Integer getIntVal(String val){
 return val!=null ? Integer.parseInt(val.trim()) : null;
}
例如:


如果(getIntVal(第[0]行)大于等于20000&&getIntVal(第[0]行),则字符串中似乎有空格。在调用
parseInt
之前,请调用trim(),先生,您在看哪个字符串?@JohnRyder the“38”你的错误信息在说这是有效的,我真的很感谢你的帮助,我无法表达我从中节省了多少压力,非常感谢你
if(getIntVal(lines[0])>=20000 && getIntVal(lines[0])<=79999) { 
                inventoryItems[i] = new InventoryItem(getIntVal(lines[0]), lines[1], getIntVal(lines[2]), Double.parseDouble(lines[3]));
                i++;
           }