`
lovnet
  • 浏览: 6878389 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

一个简单的怪问题

阅读更多

一个学员问了一个关于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');
}

分享到:
评论

相关推荐

    JAVA作业1小李打怪物.docx

    这里使用了一个整型数组`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效果插件-怪物击退效果插件

    "unity效果插件-怪物击退效果插件-Feel 3.4"就是这样一个专门针对怪物击退效果设计的插件,它能帮助开发者实现更加逼真和动态的游戏战斗体验。 "Feel 3.4"是该插件的版本号,通常意味着它包含了之前版本的所有功能...

    迷宫怪物.zip

    在IT领域,迷宫怪物可能是指一款基于迷宫探索的游戏,或者是一个编程挑战,其中的“怪物”可以代表游戏中的敌人或程序中的复杂问题。在这个压缩包“迷宫怪物.zip”中,我们可以推测它可能包含了与游戏开发、算法设计...

    引怪2(简单包)_奇迹简单不变态检测封包_

    标题中的“引怪2(简单包)_奇迹简单不变态检测封包_”似乎是指一个针对特定游戏《奇迹》(Miracle)的工具或技术,用于规避服务器的异常检测机制。这种工具通常被用于私人服务器(SF,即Private Server),以确保玩家...

    怪物简单AI-完善-Bug修改-20240604

    本文档旨在针对“怪物简单AI”的现有实现中存在的问题与不足之处提出改进方案,以提升其稳定性和效率。该AI主要应用于游戏开发领域,通过一系列脚本控制怪物的行为模式,包括巡逻、追击玩家等基本功能。通过对当前...

    《你必须知道的495个C语言问题》

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 38  3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 38  3.12 我不...

    易语言古怪的开平方法

    开平方根在计算机科学中是一项基本的数学操作,通常用于计算一个数的平方根。在易语言中,Isqrt函数是用于求解整数平方根的内置函数。这个函数接收一个非负整数作为参数,返回其最大的整数平方根。例如,如果输入值...

    易语言游戏 搞怪碰碰球

    总的来说,《易语言游戏:搞怪碰碰球》是一个结合了娱乐和教育的项目,它展示了易语言在游戏开发中的潜力,并为学习者提供了一个实践和学习易语言的好机会。无论是对游戏感兴趣,还是想提升编程技能,都可以从这款...

    易语言源码简单的打怪游戏.rar

    这款"易语言源码简单的打怪游戏.rar"压缩包包含了一个基于易语言开发的简单打怪游戏的源代码,对于学习易语言以及游戏开发的初学者来说,是一个很好的实践案例。 1. **易语言基础** 易语言的基本语法结构以中文为...

    你必须知道的495个C语言问题

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些...

    个人课设-玩家血条(包括攻击掉血,复活重生功能)+怪物攻击

    在本项目中,你将构建一个简单的游戏场景,其中包含玩家血条系统、攻击与掉血机制以及复活重生功能,同时还有怪物的攻击行为。这是一个基础的编程课设,旨在帮助你理解游戏开发中的基本元素和逻辑控制。下面将详细...

    MonsterBattler:一个简单的类似口袋妖怪的怪物战斗机

    - **主程序设计**:通常,游戏主程序包含一个主循环,负责处理用户输入、更新游戏状态和渲染画面。在MonsterBattler中,游戏逻辑可能被组织成一系列的类,如怪物类(Monster)、战斗类(Battle)和地图类(Map)等...

    新手做的计算器,bug无数,高手勿怪!

    ”表明这是一个初学者编写的计算器程序,可能存在许多错误或问题。在编程领域,尤其是初次尝试编写应用时,遇到bug是常见的现象,因为开发者可能对某些概念理解不透彻或者忽视了一些细节。这个计算器可能是用某种...

    Battle Game:一个简单的回合制战斗程序-开源

    这是一个相当简单的战斗程序,我已经从事了很长一段时间。 基本上,您只是与怪物战斗,而当您杀死一个怪物时,就会产生一个新的怪物。 我几乎可以保证会出现错误。 对此我感到抱歉,如果您遇到任何问题,请告诉我,...

    简单的打怪游戏源码.rar

    在本项目中,我们拥有的是一个名为"简单的打怪游戏源码.rar"的压缩包,它包含了一个基于C#编程语言的游戏源代码示例。这个游戏是为初学者设计的,目的是帮助他们理解如何运用编程技术来创建一个简单的游戏。下面我们...

Global site tag (gtag.js) - Google Analytics