编译并运行此程序后,将使用以下参数创建文件:
[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();
}
答案 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