一个学员问了一个关于IO的怪问题,问题是这样的:读取键盘输入的一个字符,然后打印输出这个字符,在打印字符的前面和后面分别加了一个字符串,程序的代码如下:
public class Test
{
public static void main(String [] args) throws Exception
{
System.out.print("Input a char:");
char ch = (char)System.in.read();
System.out.println("hello" + ch + "AB");
}
}
编译并运行这个程序。
(1)输入字符“a”,命令行窗口打印输出的结果如图1所示,与我们预期的一样。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 371.25pt; HEIGHT: 145.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cflx%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>
图1
(2)重新运行这个程序,直接按下回车键,在命令行窗口打印输出的结果如图2所示。这时,打印输出的结果是:打印语句中字符后面的字符串“替换”了字符前面的字符串中的部分字符,即打印输出字符串“ABllo”。
<shape id="_x0000_i1026" style="WIDTH: 371.25pt; HEIGHT: 132.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cflx%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"><font size="3"></font></imagedata></shape>
图2
请大家都来想一想,为什么在输入普通字符时,输出的结果是正常的;而直接按下回车键,后面的字符串就“替换”了前面的字符串,并且没有输出回车换行符呢?
--------------------
上面的问题,是我分析出原因后,为了讲课方便,重新调整的例子,并且写出了错误规律。其实,学员最初的问题非常隐蔽,并没有我上面的案例这么直接,并且找不出错误规律。下面是他当初的程序代码。
public static void main(String [] args) throws Exception{
String str="";
char ch0=0;
System.out.print("intput string and String:");
do{
ch0=(char)System.in.read();
str+=ch0;
}while(ch0!='#');
char ch/*='0'*/;
System.out.print(str);
ch=(char)System.in.read();
System.out.println("hello" + ch + 'b');
}
分享到:
相关推荐
这里使用了一个整型数组`wuqi`存储每种武器的攻击力,并通过`Math.random()`函数生成一个0到2之间的随机数,来决定使用哪种武器。 `Monster`类同样包含两个属性:`hp`和`name`。构造函数接收怪物的生命值和名字作为...
"g键添加怪物"意味着我们需要实现一个用户输入处理机制,监听特定的按键事件,并在适当的时候生成新的怪物。这需要理解游戏循环、事件驱动编程以及状态机的概念。玩家的移动由"WASD"键控制,这也需要相应地处理键盘...
总之,"小古怪文章系统"是一个便于管理和发布的文章平台,它的核心价值在于提供了一套简洁易用的后台管理系统,使得内容的发布和管理变得简单。对于初学者和小型企业来说,这是一个理想的起点,可以快速搭建起自己的...
同时,定义一个结构体`PathNode`用于表示路径上的每个点,包括节点坐标和指向下一个节点的指针。 ```cpp struct PathNode { int x; int y; PathNode* next; }; struct Monster { int x; int y; float health...
"unity效果插件-怪物击退效果插件-Feel 3.4"就是这样一个专门针对怪物击退效果设计的插件,它能帮助开发者实现更加逼真和动态的游戏战斗体验。 "Feel 3.4"是该插件的版本号,通常意味着它包含了之前版本的所有功能...
在IT领域,迷宫怪物可能是指一款基于迷宫探索的游戏,或者是一个编程挑战,其中的“怪物”可以代表游戏中的敌人或程序中的复杂问题。在这个压缩包“迷宫怪物.zip”中,我们可以推测它可能包含了与游戏开发、算法设计...
标题中的“引怪2(简单包)_奇迹简单不变态检测封包_”似乎是指一个针对特定游戏《奇迹》(Miracle)的工具或技术,用于规避服务器的异常检测机制。这种工具通常被用于私人服务器(SF,即Private Server),以确保玩家...
本文档旨在针对“怪物简单AI”的现有实现中存在的问题与不足之处提出改进方案,以提升其稳定性和效率。该AI主要应用于游戏开发领域,通过一系列脚本控制怪物的行为模式,包括巡逻、追击玩家等基本功能。通过对当前...
中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 38 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 38 3.12 我不...
开平方根在计算机科学中是一项基本的数学操作,通常用于计算一个数的平方根。在易语言中,Isqrt函数是用于求解整数平方根的内置函数。这个函数接收一个非负整数作为参数,返回其最大的整数平方根。例如,如果输入值...
总的来说,《易语言游戏:搞怪碰碰球》是一个结合了娱乐和教育的项目,它展示了易语言在游戏开发中的潜力,并为学习者提供了一个实践和学习易语言的好机会。无论是对游戏感兴趣,还是想提升编程技能,都可以从这款...
这款"易语言源码简单的打怪游戏.rar"压缩包包含了一个基于易语言开发的简单打怪游戏的源代码,对于学习易语言以及游戏开发的初学者来说,是一个很好的实践案例。 1. **易语言基础** 易语言的基本语法结构以中文为...
中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些...
在本项目中,你将构建一个简单的游戏场景,其中包含玩家血条系统、攻击与掉血机制以及复活重生功能,同时还有怪物的攻击行为。这是一个基础的编程课设,旨在帮助你理解游戏开发中的基本元素和逻辑控制。下面将详细...
- **主程序设计**:通常,游戏主程序包含一个主循环,负责处理用户输入、更新游戏状态和渲染画面。在MonsterBattler中,游戏逻辑可能被组织成一系列的类,如怪物类(Monster)、战斗类(Battle)和地图类(Map)等...
”表明这是一个初学者编写的计算器程序,可能存在许多错误或问题。在编程领域,尤其是初次尝试编写应用时,遇到bug是常见的现象,因为开发者可能对某些概念理解不透彻或者忽视了一些细节。这个计算器可能是用某种...
这是一个相当简单的战斗程序,我已经从事了很长一段时间。 基本上,您只是与怪物战斗,而当您杀死一个怪物时,就会产生一个新的怪物。 我几乎可以保证会出现错误。 对此我感到抱歉,如果您遇到任何问题,请告诉我,...
在本项目中,我们拥有的是一个名为"简单的打怪游戏源码.rar"的压缩包,它包含了一个基于C#编程语言的游戏源代码示例。这个游戏是为初学者设计的,目的是帮助他们理解如何运用编程技术来创建一个简单的游戏。下面我们...