Java 扫描仪可以';看不到整数,BufferedWriter可以';我什么也不写
晚上好! 我需要读一些整数并用它们做数学运算,但我的问题不在于算法。扫描仪不从.txt读取int,BufferedWriter也不写入这些int。当我尝试在控制台中编写它时,结果是0。可能是什么Java 扫描仪可以';看不到整数,BufferedWriter可以';我什么也不写,java,java.util.scanner,bufferedwriter,Java,Java.util.scanner,Bufferedwriter,晚上好! 我需要读一些整数并用它们做数学运算,但我的问题不在于算法。扫描仪不从.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 Buffered
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();
}
好的,非常感谢大家,扫描器或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();
}
publicstaticvoidmain(字符串[]args)引发异常{
Scanner fin=新扫描仪(新文件(“aaa.in.txt”);
BufferedWriter fout=新的BufferedWriter(新文件编写器(“bbb.out.txt”);
双和=0;
int k=fin.nextInt();
int n=fin.nextInt();
for(int i=0;i
问题在于,你误解了你所写的内容
只写一个字符
您正在编写的字符是0
,因为sum==0
。现在,这不是数字零,'0'
(应该是48),而是字符'\0'
,空字符,它是值为零的字符。这是一个非打印字符,因此如果在文本编辑器中打开该文件,或者只是在命令行上打开它,您将看不到它
因此,您正在将其写入文件,这并不是您所期望的。如果要写入数字'0'
,请使用BufferedWriter.write(String)
:
我认为您从文本文件中获得的值被视为字符串。
您是否尝试过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();
}
您可以添加文件的内容吗?您是否尝试将内容打印到控制台?有助于理解您的代码正在做什么…变得更好。好的,现在当你按照@GhostCat的建议用printlns调试你的程序时会发生什么?我很高兴这一条不适合评论,你决定今晚交出解决方案作为答案。“我认为你从文本文件中得到的值被认为是字符串”不,它们不是,因为它们是通过Scanner.nextInt()读取的。这基本上是在内部执行Integer.parseInt(next())
,但您不需要。是的。我理解。非常感谢。
fout.write(Integer.toString(sum));
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();
}