服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

新手必读 java中流的概念


  昨天寝室同学问了我个关于java流的问题,在解答完后很有感触,我认为可能所有新手都可能有这样的问题,所以总结一下发出来,呵呵.供大家参考:

  那,同学问我的题,提其实我也没太听明白什么意思,因为他表达不请,但有一点我是明确的,就是他要从键盘输入数(控制台的那种),然后计算出长方形的面积. 类似这个问题.呵呵,其实这个问题很简单,在c++里只需cin就ok了,但在java里,不是那么简单,他本来用system.in.read();但这个函数独进后返回的是int形,但实际上是ascii码,比如输入1,那么返回的是51(记不清1的asc码了),而不是1,当然你可以给他转换成char但char有转不了int,呵呵,总之很麻烦,俺也说不清,所以就换了一种方法.所以我换了一种方法,该方法如下,我想大概有不少新人都不太会,所以给出源码如下:

package test;

import java.io.bufferedreader;
import java.io.ioexception;
import java.io.inputstreamreader;

public class testinout {

 /**
 * @param args
 */
 public static void main(string[] args) {
  // todo 自动生成方法存根
  test test=new test();
  bufferedreader stdin = new bufferedreader(new inputstreamreader(system.in));
  system.out.print("请输入长方形的长:");
  try {
   test.seta(float.parsefloat(stdin.readline()));
   system.out.print("请输入长方形的宽:");
   test.setb(float.parsefloat(stdin.readline()));
   test.setarea();
   system.out.print("该长方形的面积是:");
   system.out.println(test.getarea());
  } catch (ioexception e) {
   // todo 自动生成 catch 块
   e.printstacktrace();
  }
 }
}

class test{
 private float a;
 private float b;

 public float getb() {
  return b;
 }
 public void setb(float b) {
  this.b = b;
 }
 public void seta(float a){
  this.a=a;
 }
 public float geta(){
  return a;
 }

 private float area;
 public float getarea() {
  return area;
 }
 public void setarea() {
  area=a*b;
 }
}

  执行结果:

   请输入长方形的长:3
   请输入长方形的宽:4
   该长方形的面积是:12.0

  这里面的 bufferedreader便是个流了,呵呵,所以我就顺便把流的东西总结了一下,请看下面代码:

package test;
import java.io.*;
public class iostreamdemo {
 public void samples() throws ioexception {
  // 1. 这是从键盘读入一行数据,返回的是一个字符串
  bufferedreader stdin = new bufferedreader(new inputstreamreader(system.in));
  system.out.print("enter a line:");
  system.out.println(stdin.readline());

  // 2. 这是从文件中逐行读入数据

  bufferedreader in = new bufferedreader(new filereader("iostreamdemo.java"));
  string s,
  s2 = new string();
  while ((s = in.readline()) != null)
   s2 += s + "/n";
   in.close();

   // 3. 这是从一个字符串中逐个读入字节
   stringreader in1 = new stringreader(s2);
   int c;
   while ((c = in1.read()) != -1)
    system.out.print((char) c);

    // 4. 这是将一个字符串写入文件
    try {
     bufferedreader in2 = new bufferedreader(new stringreader(s2));
     printwriter out1 = new printwriter(new bufferedwriter(
new filewriter("iodemo.out")));
     int linecount = 1;
     while ((s = in2.readline()) != null)
      out1.println(linecount++ + ": " + s);
      out1.close();
    } catch (eofexception e) {
     system.err.println("end of stream");
    }
   }
}

  我想看了上面的代码,大家应该对流有了一个简单的认识,会用它从键盘读数据了.

扫描关注微信公众号