java问题:如何判断获取的int类型的值为不为空?

java问题:如何判断获取的int类型的值为不为空?,第1张

你的意思是不是如何判断这个int参数是否是用户传入的有效值,还是系统默认值。
答案:int类型是不能确定的。因为当申请该参数的时候,int类型就会被虚拟机赋默认值0所以无法根据是否是0来判断数据是否是用户数据还是系统默认值。除非你能确定用户传的参数不会是0
建议用Interger,int的封装类型。申请内存时为null。

能不能说详细点,用了什么语言,既然定义了一个数组,什么叫未空
你可以用一个变量i,初值为-1,当给数组赋值时,就加1,去掉一个元素就减1,判断它是否等于-1就能判断数组是否为空
如果你不去遍历这个数组里的元素,怎么知道是不是0呢,初始化的时候C#里,数组就全是0了吧,不用循环的话,除非你不对它执行任何 *** 作,我不知道C#里有什么现成的方法能在不用循环的条件下,或者说不去遍历数组里的元素的情况下,就可以知道数组里的元素都是否为0
你可以照我上面的方法做,既然全0的时候是空,那么在你改变其中一个元素值的时候,就可以令i+1,还原到0的时候就i-1,最后只要看i的值,不就可以判断是否为空了,就不用循环了

输入444时的回车遗留在输入缓冲区里(因为scanf在%d控制下不接收回车符),被下面的scanf("%c",&y);当作一个字符接收了(回车符也是字符啊),所以while还要循环,直接要求你输入数据,但输入的是字母不是数字,scanf("%d",)不接收并留在输入缓冲区里,被下面的scanf("%c",&y);接收,while的()中不是0,所以printf就输出了上次接收的444。如此往复。

把scanf("%c",&y);改成scanf(" %c",&y);,即在%前加一个空格,把输入444时遗留在输入缓冲区里的'\n'吸收掉,就能等你输入数据了。但由于y是char型,无论输入什么都不会是0,所以while循环不会停止。

正确改法是在scanf("%c",&y);前加一句fflush(stdin);把输入错了数据从输入缓冲区中统统清除,并把while(y);改成while(y!='N');,则当输入N时程序就结束了。

准确的说,函数这个名称不太准确,容易误导人。C/C++里的函数应该被叫做“子程序”,是一个独立的程序段,可以被重复调用用来完成类似的功能
这样的“子程序”很多情况下是用来提供一个值的,这就是通常的函数,这个值的类型必须明确,就是返回值的类型
但有的子程序不是用来提供一个值,可以仅仅是执行某些特定的 *** 作,那么,定义为空类型是安全的,表示“不允许该子程序返回值”。这种子程序只能通过独立的语句调用,不能用在表达式里
之所以需要空类型,是因为,函数的默认返回值类型是int,如果在函数定义时未带返回类型说明,则默认为int;即使函数中没有return语句,编译器按照函数返回值的原理,会返回一个不确定的值。如果将这样的函数错用在表达式里,语法上没错,但会带来很难察觉的逻辑错误。
而将空类型函数用在表达式里是一个编译错误。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13406365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存