晚上好! 我需要阅读一些整数并用它们做数学,但我的问题不在于算法。扫描程序不从.txt读取int,而BufferedWriter也不会写入这些int。当我尝试在控制台中编写它时,结果是0.它可以是什么?
public static void main(String[] args) throws Exception {
Scanner fin = new Scanner(new File("aaa.in.txt"));
BufferedWriter fout = new BufferedWriter(new FileWriter("bbb.out.txt"));
int sum = 0;
int k = fin.nextInt(); int n = fin.nextInt();
for (int i = 0; i < k; i++) {
sum += fin.nextInt() / n * fin.nextInt();
}
fout.write(sum);
fin.close();
fout.close();
}
这是我的输入
5 30
2 32
7 87
4 100
1 27
16 85
嗯,非常感谢大家,扫描仪或BufferedWriter没有任何问题。我只需要加倍,如上所述,我不明白它是如何工作的。毕竟这是我的代码。也许以后会帮助别人。
public static void main(String[] args) throws Exception {
Scanner fin = new Scanner(new File("aaa.in.txt"));
BufferedWriter fout = new BufferedWriter(new FileWriter("bbb.out.txt"));
double sum = 0;
int k = fin.nextInt();
int n = fin.nextInt();
for (int i = 0; i < k; i++) {
sum += fin.nextDouble() / n * fin.nextDouble() / 100;
}
fout.write(Double.toString(sum));
fin.close();
fout.close();
}
答案 0 :(得分:4)
问题在于你误解了你写给fout
的内容。
BufferedWriter.write(int)
写一个字符。
您撰写的字符为0
,因为sum == 0
。现在,这不是数字零,'0'
(将是48),它是字符'\0'
,空字符,即char
,其值为零。这是一个非打印字符,因此如果您在文本编辑器中打开文件,或者只是在命令行上cat
,则不会看到此字符。
所以你将写入文件,这不是你所期望的。如果您要编写数字'0'
,请使用BufferedWriter.write(String)
:
fout.write(Integer.toString(sum));
答案 1 :(得分:0)
我认为您从文本文件中获取的值被视为字符串。 你尝试过Integer.parseInt()方法吗? 我做了一些更改,试图访问一个文件,并将所有数字的总和提供到input.txt(您的输入),它运行没有问题。 另外,在输入文件中,我只有一行整数。
public static void main(String[] args) throws FileNotFoundException, IOException
{
Scanner fin = new Scanner(new File("input.txt"));
BufferedWriter fout = new BufferedWriter(new FileWriter("output.txt"));
int sum = 0;
while (fin.hasNext())
{
sum += Integer.parseInt(fin.next());
}
System.out.println(sum);
fout.write(sum);
fin.close();
fout.close();
}