Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描仪可以';看不到整数,BufferedWriter可以';我什么也不写_Java_Java.util.scanner_Bufferedwriter - Fatal编程技术网

Java 扫描仪可以';看不到整数,BufferedWriter可以';我什么也不写

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

晚上好! 我需要读一些整数并用它们做数学运算,但我的问题不在于算法。扫描仪不从.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();
}
好的,非常感谢大家,扫描器或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();
}