从锦囊妙计想到的19–计算机输出和输入

前面的第18说明的计算机的输入和输出等一下事情, 然后举列了打印一个图形, 后来回头看了一下, 感觉说的不太清楚, 因此在那在补充一下, 同时在介绍点其他的东西

一。 计算机的输入和输出工作

一个计算机总要有输入的, 否则没办法接受用户的命令, 也要有输出的, 否则没办法告诉用户 结果是什么! 如下图:

如上图, 计算机中的键盘是典型的输入设备, 鼠标也是典型的输入设备

这个是键盘

这个是鼠标

如下图的几个设备都是输入设备, 功能类似鼠标

一般笔记本上比较多。

二。 输入的回显

一般情况下, 人们在操作电脑进行输入时, 很有可能会发生错误, 主要是键盘比较小, 或是鼠标有时候不灵敏等,因此我们如何知道我们输入的数据是正确的?

因此通常情况下, 计算机会把您在键盘的输入的数据显示到计算机屏幕上, 这样您就可以立即发现您的输入是否正确了, 正确您继续输入下一个, 错误了, 您可以返回去修改信息, 然后在输入下一个数据。

鼠标也类似, 鼠标在屏幕上有一个指针式的东西, 移动鼠标时, 指针也移动因此您就知道您在哪里了, 然后您就可以进行左键或者右键了。

下面做一个实验

点击windows的开始菜单, 如下图:

如上图, 点击1处的开始菜单,  然后在点击2处的运行

参照上图, 会弹出一个黑色的  cmd命令提示符窗口

如上图, 当弹出黑色窗口后, 您可以 在键盘输入12asdf, 这样, 您就可以看到屏幕上有了“12asdf”字符显示出来。

您看, 您在键盘输入了字符, 然后,显示器就自动输出了!

下面看一下鼠标

如上图, 鼠标移动, 指针就移动, 并且随着到了不同位置, 显示不同的 形状

三。程序里面进行输入和输出

上面说了什么是输入和输出, 那么程序如何使用输入和输出设备。为了使用输入输出设备我们需要给输入设备起个名称, 否则谁知道你在叫谁呀!

那么在给输入设备起名前, 我们需要给电脑起个名称, 否则谁知道你在叫那个电脑的输入设备。

因此我们给 我们自己的电脑起个名称叫做  System, 这个名称在java里面是这么叫的, 其他语言中有不同的表示方法。

另外这个名称 System仅仅代表自己的计算机, 就是您程序所在的计算机。

那么计算机下面的

输入设备是什么?  java里面是  Sysem.in 这个是输入设备,

类似的System.out 这个是输出设备, 一般代表显示器(其实一般是控制台窗口)

另外,还有一个 System.err 也是个输出设备, 但是这个设备仅仅是输出错误信息的。

一)输出功能

下面我们看一下, 输出设备都有哪些功能可以提供给我们用

从上图中,我们可以确定看到,System.out主要功能就是 print,printf, println

区别:

print这个类别的输出是在计算机屏幕打印东西, 但是有什么就打印什么, 比不告诉他换行, 他就不换行

println 这个输出类别 是, 你告诉他输出什么就输出什么, 最后他自作多情, 在帮您换行

最后printf这个是带有一个格式化字符串的功能, 这个功能强大, 但是一般用的不多, 将来您明白您在做什么自然明白他是什么功能了。

另外, System.out还有一些别的功能, 这里不多说了, 将来您水平到一定程度搜索一些文档自然知道了。

二)输入功能

参考如下图

System.in的输入命令, 主要就是 read的函数, 但是就三个函数, 通常都不太好用, 因此我们这么使用

import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {

//创建Scanner对象
//System.in表示标准化输出,也就是键盘输出
Scanner   sc = new Scanner(System.in);
//利用hasNextXXX()判断是否还有下一输入项
while (sc.hasNext()) {
//利用nextXXX()方法输出内容
String str = sc.next();
System.out.println(str);
}
}
}

如上面代码, 我们采用了 Scanner进行输入运行情况如下:

另外, System.in.read获得输入的方法如下

方法一:使用System.in.read()获取键盘输入,此方法只能一个字符一个字符的获取,获取到的变量类型为int,需要通过类型转换获取到自己期望的类型。该方法也会接收回车符(13)、换行符(10)。

import java.io.IOException;
public class Demo1 {
    public static void main(String[] args) {
        try {
            System.out.print("Enter a char :");
            while(true){
                char val = (char)System.in.read();
                if(val == 13 || val == 10){
//                  byte b = (byte)val;
//                  System.out.println(b);
                }else{
                    System.out.println("Your char is :" + val + "\r");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

很麻烦!

再次还可以这么用BufferedReader

使用BufferedReader类的readLine方法从控制台接收一个字符串。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo2 {
    public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        try {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            while(true){
                System.out.print("Enter a String :");
                String val = bufferedReader.readLine();
                System.out.println("Your String is :" + val + "\r");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            if(bufferedReader != null){
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                bufferedReader = null;
            }
        }
    }
}

下面是另外更丰富键盘输入的例子:

import java.util.Scanner;
public class Demo4 {
    public static void main(String[] args) {
        Scanner sc = null;
        try {
             sc = new Scanner(System.in); 
             System.out.println("请输入您的年龄:"); 
             int age = sc.nextInt(); 
             System.out.println("请输入您的姓名:"); 
             String name = sc.nextLine(); 
             System.out.println("请输入您的体重(kg):"); 
             float salary = sc.nextFloat(); 
             System.out.println("您的个人信息如下:"); 
             System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"体重:"+salary); 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(sc != null){
                sc.close();
                sc = null;
            }
        }
    }
}

 

 

最后, 也可以用下面的Console输入方法输入数据,  (注:该种方法不能在eclipse中使用)

import java.io.Console;
import java.io.PrintWriter;

public class TestConsole {
    public static void main(String[] args) {
        
        Console cons = System.console();
        if (cons != null) {
            
            PrintWriter printWriter = cons.writer();
            printWriter.write("input:");
            cons.flush();
            String str1 = cons.readLine();
            cons.format("%s", str1);
        }
    }
} 

上面的这些输入足够用了, 毕竟目前, 大部分程序都是图形界面的程序, 在图形界面中, 有更好的用户输入输出交互方法

更多的输入输出设备

下面是一些输入和输出设备, 了解一下!

一) 输入设备

计算机的 输入设备按功能可分为下列几类:
● 字符输入设备:键盘;
● 光学阅读设备:光学标记阅读机、光学字符阅读机;
● 图形输入设备:鼠标器、操纵杆、光笔;
● 图像输入设备:数码像机、扫描仪、传真机;
● 模拟输入设备:语言模数转换识别系统。
(如光电纸带输入器、卡片输入器、光学字符读出器、磁带输入装备、汉字输入装备、鼠标等)将数据、程序和控制信息送入计算机内。

二)输出设备

显示器
黑白显示器


显示器(Display)又称监视器,是实现人机对话的主要工具.它既可以显示键盘输入的命令或数据,也可以显示计算机数据处理的结果.
常用的显示器主要有两种类型。一种是CRT(Cath-odeRayTube,阴极射线管)显示器,用於一般的台式微机;另一种是液晶(LiquidCrystalDisplay,简称LCD)显示器,用於便携式微机.下面主要介绍CRT显示器.按颜色区分,可以分为单色(黑白)显示器和彩色显示器.
彩色显示器又称图形显示器.它有两种基本工作方式:字符方式和图形方式.在字符方式下,显示内容以标准字符为单位,字符的字形由点阵构成,字符点阵存放在字形发生器中.在图形方式下,显示内容以像素为单位,屏幕上的每个点(像素)均可由程序控制其亮度和颜色,因此能显示出较高质量的图形或图像.
显示器的分辨率分为高中低三种.分辨率的指标是用屏幕上每行的像素数与每帧(每个屏幕画面)行数的乘积表示的.乘积越大,也就是像素点越小,数量越多,分辨率就越高,图形就越清晰美观

(1)CGA(ColourGraphicAdapter)彩色图形适配器,俗称CGA卡,适用於低分辨率的彩色和单色显示器.它支持的显示方式为:
字符方式下,40列×25行,80列×25行,4色或2色.
图形方式下,320×200,4色;640×200,2色.
(2)EGA(EnhancedGraphicAdapter)增强型图形适配器,俗称EGA卡,适用於中分辨率的彩色图形显示器.它支持的显示方式为:字符方式下,80×25列,256色 图形方式下,640×350,16色
超级EGA卡,支持800×600,16色.
(3)VGA(VideoGraphicArray)视频图形阵列,
液晶显示器


液晶显示器
俗称VGA卡,适用於高分辨率的彩色图形显示器.标准的分辨率为640×480,256色。使用的多是增强型的VGA卡,比如SuperVGA卡等,分辨率为800×600,1024×768等,256种颜色.
(4)中文显示器适配器
中国在开发汉字系统过程中,研制了一些支持汉字的显示器适配器,比如GW-104卡、CEGA卡、CVGA卡等,解决了汉字的快速显示问题.

 

----

打印机
打印机(Printer)是将计算机的处理结果打印在纸张上的输出设备.人们常把显示器的输出称为软拷贝,把打印机的输出称为硬拷贝.将计算机输出数据转换成印刷字体的设备。从使用角度看可分为两类。一类具有键盘输入功能,速度较慢,但与计算机有对话能力。它价格低廉,除计算机和终端常用外,通信系统也把它用作常规设备。另一类没有键盘输入功能。这类打印机又可分为条式打印机、窄行式打印机、串行打印机、行式打印机和页式打印机等。按照物理结构,打印机又可分为击打式和非击打式两类。


打印机分类
按传输方式,可以分为一次打印一个字符的字符打印机、一次打印一行的行式打印机和一次打印一页的页式打印机.
按工作机构,可以分为击打式打印机和非击打式印字机.其中击打式又分为字模式打印机和点阵式打印机.非击打式又分为喷墨印字机、激光印字机、热敏印字机和静电印字机.

 

绘图机
自动绘图机是直接由电子计算机或数字信号控制,用以自动输出各种图形、图像和字符的绘图设备。可采用联机或脱机的工作方式。是计算机辅助制图和计算机辅助设计中广泛使用的一种外围设备。常见的按绘图方式分为跟踪式绘图机(如笔式绘图机)和扫描式绘图机(如静电扫描绘图机、激光扫描绘图机、喷墨式扫描绘图机)等。按机械结构分为滚筒式(鼓式)绘图机和平台式绘图机两大类。数控绘图机的传动方式有钢丝或钢带传动;有滚珠丝杠或齿轮齿条传动;有电机传动,如采用开环控制方式的直线步进电机和采用闭环控制的伺服电机等。绘图仪能按照人们要求自动绘制图形的设备。它可将计算机的输出信息以图形的形式输出。主要可绘制各种管理图表和统计图、大地测量图、建筑设计图、电路布线图、各种机械图与计算机辅助设计图等。最常用的是X-Y绘图仪。现代的绘图仪已具有智能化的功能,它自身带有微处理器,可以使用绘图命令,具有直线和字符演算处理以及自检测等功能。这种绘图仪一般还可选配多种与计算机连接的标准接口。