ata utput tream-关于for循环问题,加不加括号有什么区别

问题描述

关于for循环问题,加不加括号有什么区别
   DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
          int a[]={1,3,4,62,13,35};
        for (int i = 0; i < a.length; i++) 

                dos.writeInt(a[i]);
                dos.close();

}
这样就没问题,但是如果
for (int i = 0; i < a.length; i++)
{
dos.writeInt(a[i]);
dos.close();

}

这样加了括号就有问题了,报写入错误,是为什么呢

解决方案

 for (int i = 0; i < a.length; i++)
                dos.writeInt(a[i]);//不加括号,for循环只包含这句
                dos.close();     //加了括号,这句也在for循环内了,close后再循环writeInt就报错了。

解决方案二:

不加大括号,默认循环条件下一行为循环体。
如加上括号,整个括号都是循环体,加了括号后你在第一次循环的时候已经 dos.close();第二次执行循环体写文件当然报错了~~~

解决方案三:

close()写在for循环外面

解决方案四:

加了{}整当成一个整体为for的执行语句块,所以当你执行for循环i=0是就close了所以出错,不加{}时for后面的第一句话当成for的执行语句块

解决方案五:

那没括号怎么知道循环到哪里结束呢

解决方案六:

那没括号怎么知道循环到哪里结束呢

解决方案七:

加括号版本:

 DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
 int a[]={1,3,4,62,13,35};
 for (int i = 0; i < a.length; i++) {

                dos.writeInt(a[i]);
                dos.close();
}

第一次循环就把文件关了,你再读肯定出错。
不加括号相当于下面的版本:

 DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
 int a[]={1,3,4,62,13,35};
 for (int i = 0; i < a.length; i++) {

                dos.writeInt(a[i]);
}
 dos.close();

即文件操作完再关闭且不再对已关闭的文件进行操作,这样就不会出错。

解决方案八:

文件操作完之后再关闭流

时间: 2016-04-26

ata utput tream-关于for循环问题,加不加括号有什么区别的相关文章

浅谈js中调用函数时加不加括号的问题_javascript技巧

其实总结起来如下: 函数只要是要调用它进行执行的,都必须加括号.此时,函数()实际上等于函数的返回值.当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码. 不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码.它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行. 所以一般时候我们都是采用的是无括号的原因.这也是由于括号的二义性,因为括号是"函数调用运算符",相当于在执行

C++中创建对象的时候加括号和不加括号的区别

c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new MyClass; 4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数. #include <iostream> class MyClass { public: MyClass() { std::cout << "Hello M

编译程序加不加 -lpthread 的区别【转】

转自:http://www.cnblogs.com/Swartz/articles/3939382.html 作者:Lokki 出处:http://www.cnblogs.com/Swartz/ 欢迎转载,也请保留这段声明.谢谢!   讨论贴   最近在CSDN上看到一个帖子在讨论 进程间共享的Posix mutex的锁定状态能否被子进程继承?,其中4楼的帖子给出了一个测试局部mutex能否被继承的例子: 1 #include <pthread.h> 2 #include <stdio.

VS2005的那中我输入前半个括号他会自动给我加右括号。还有我输入第一个字母,他会出现一些让我选择的结果,这些怎么设置的啊

问题描述 这是怎么设置的啊,我以前用的有提示,怎么现在没提示了啊!! 解决方案 解决方案二:up解决方案三:装个VC助手就可以了Visual.Assist.X.v10.0.1233.0VC里面设置工具菜单->选项->文本编辑器->C/C++解决方案四:同意楼上的!Visual.Assist.X最新版到了V10.0.1559,到迅雷搜索里一搜一大堆http://www.gougou.com/search?search=Visual%20Assist%20X&id=1解决方案五:安装

java-android中使用循环wrong

问题描述 android中使用循环wrong 需要一个循环对ID执行.可惜实现之后,只有第一次输入id正确接收了.在数组中其余的值都无法正确进行循环.代码如下:请高手解答哪里出现错误了. if (arraylistSelectedConsumerIds != null) { for (int i = 0; i <arraylistSelectedConsumerIds.size(); i++) ConsumerId = arraylistSelectedConsumerIds.get(i); d

scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归

package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println("please input something,press Enter to exit:") //每一行最后加不加分号都可以 readKeyboard //注:无参数的函数调用,加不加括号都行 println(add(1, 2) + "\n------\n") println(d

Python系列教材第一集

            Python 新员工教材     楚广明2012                                     借用了一些闫小勇\郑纳智同志的文档,向同志们致敬!     目录 一.         Python概述. 5 1)             第一个Python程序. 6 1.             为什么要学习Python 7 2.             代码块与缩进的差异. 8 3.             语句结尾的差异. 8 4.     

必须知道的HTML5的新特性,技巧以及技术

总结一下: 1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcaption>来语义化地表示带标题的图片 <figure> <img src="path/to/image" alt="About image" /> <figcaption> <p>This is an im

Sql Server 存储过程实例讲解

  一.遇到的问题 我们在之前学习的课程写了不少的批处理语句,这些批处理语句存在两个问题: 1.没法像函数那样传参数运行(自定义化) 2.没法像函数那样可以反复地调用(功能化模块化) 说到这里,我们可以猜到,数据库中应该可以建立函数形式的数据库对象来解决这样的问题.但是介绍这种数据库对象之前,我们再来看几个需要解决的问题: 我们已经学会把一条select语句封装在视图中,但是它只能用来查询,如果我们希望进行其它操作,比如增删改记录.建删库表等,是不能用视图来完成的. 另一方面,如果把一个带有更改