为什么打印出两位数而不是一位?

时间:2013-12-05 22:35:48

标签: java arrays digits

编译并运行此程序后,将使用以下参数创建文件:

[1,2,3,4,5,6,7,8,9,20] 20

我不明白阵列关闭后附加20来自哪里。如何删除它以及导致它的原因?

该程序正在创建一个.txt文件并输入一个数组。最后一个数字被修改为20,但由于某种原因,另外20个数字被添加到整个数组之外。这是代码:

public static void main(String[] args) throws IOException 
{
    int[] a = {1,2,3,4,5,6,7,8,9,10};

    File file = new File("text.txt");                    
    if (!file.exists())                   
    {
        file.createNewFile();
    }

    FileWriter fw = new FileWriter(file.getAbsoluteFile());     
    BufferedWriter bw = new BufferedWriter(fw);         

    bw.write(" " + Arrays.toString(a));             
    bw.close();                         

    System.out.println("Done!");                   

    StringBuilder contents = new StringBuilder();           
    file = new File("text.txt");

    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;

    while ((line = br.readLine()) != null) 
    {
       contents.append(line);
    }

    String[] numbers = contents.toString().split("10");

    try {
        numbers[numbers.length - 1] = String.valueOf(Integer.parseInt(numbers[numbers.length - 1]) - 1);
    } catch (NumberFormatException nfe) { }

    FileOutputStream fos = new FileOutputStream(file);          
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos));

    for(String number : numbers)
    {
        out.write(number + 20);
    }

    out.close();

}

1 个答案:

答案 0 :(得分:2)

最有可能的是,你想要的是这个

String line20 = line.replaceAll("\\b20\\b", "10");

\\b确保20是单词,而不是单词的一部分。


您的“号码”是一个字符串。当您添加20行"text"时,您会获得"text20"

当你用“10”分割时,你会得到两个字符串

[1, 2, 3, 4, 5, 6, 7, 8, 9, 
]

所以当你在每个

之后添加“20”时
[1, 2, 3, 4, 5, 6, 7, 8, 9, 20
]20