繁体   English   中英

当计数等于零时如何不返回任何内容?

How to return nothing when count is equal to zero?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我希望函数 countChar 仅在计数大于零时返回一个值,否则我希望它不返回任何内容。

我知道该方法不能返回 null,因为 null 不能是 Int。 有没有另一种方法可以有效地返回“空”值?

public static int countChar(String str, char ch){ 
int count = 0;
for (int i=0;i<str.length();i++) {
  if (str.charAt(i)==ch)
    count++;
  }
  if (count>0) {
    return count;
  }else{
    return null;
  }
}

错误:不兼容的类型:无法转换为 int return null; ^ 我希望它绝对不返回任何东西而不是零。

3 个回复

使用Integer而不是int ,其他一切保持不变:

public static Integer countChar(String str, char ch){...} 

但是方法命名没有意义——countChars 计算字符在字符串中出现的次数。 如果没有出现特定字符,则 0 是一个完全合理的响应。 Null 并不是一个真正合理的响应 - 如果你想要 null 然后让调用 countChars 的方法返回 0 并继续处理,就好像它是 null 一样:

int result = countChars("Hello world", 'z');
if(result == 0)
  someMethod(null);
else
  someMethod(result.ToString());

即使抛出异常也比返回 null 更好,因为它至少告诉开发人员谁在使用你的代码,哪里出了问题,并提供了一些关于如何修复它的线索。 要求代码做一些不应该真正返回空白响应的事情,而获得空白响应可能会令人难以置信地令人沮丧

您可以通过两种方式更改它。

  1. 通过改变给定的比较逻辑。 如果为零,则不会返回任何内容。
if (count > 0) {
    return count;
  }
~~~~~~~~~~~~~~~~~~~~~~~~~~~

OR

2. You can return null but change the return type of method from primitive to nonprimitive.

~~~~~~~~~~~~~~~~~~~~
public static Integer countChar(String str, char ch){

---
---
if (count>0) {
    return count;
  }

    return null; 
} 
~~~~~~~~~~~~~~~~~~~
1 当nextInt等于零时,如何终止程序?

我用回文数填充Arraylist&lt;Integer&gt; 。 然后,我通过其get()方法从列表中检索用户指定的元素,并打印该数字。 我正在尝试使用while循环来允许用户选择多个元素,直到他输入“ 0”为止,但是该程序在第一次选择后退出。 我该如何重复? ...

3 LINQ:列出联接表中的计数等于零时的全部

目前我有两张桌子 1)“工作”列表 2)与每个工作相关的“发票”列表 我需要找到一种方法来选择所有没有“发票”的“职位”,因此最终的预期结果将是: 我正在尝试类似的事情: 而且仍然没有运气。 如何在LINQ中实现? 任何帮助深表感谢! ...

5 当约束等于零时,无法将其最小化

我有两个数组,一个数组有金额,另一个数组有风险。 我想从根本上将金额的总和最小化,同时将风险的总和保持不变。 为此,我想将“数量”和“风险”乘以一系列权重(需要解决)。 我得到的结果是: 在Excel(Simplex LP)上使用求解器时,我得到了可行的结果:使用猜测权重: ...

9 当COUNT值等于零时,SQL失败/不生成

我正在尝试为人们查看可用和已取消的班级生成一个列表,但我的SQL只能以某种方式只打印已预订的班级,而班级的人则永远不会显示它。 我怀疑是因为HAVING导致仅生成保留类。 我的桌子: 班级 CID,ClassLevel,StartDate,StartTime,持续时间,D ...

10 当余额等于零时,如何退出while循环,因此全额支付?

我必须写一些代码来搜索信用卡的最低月付款。 我正在使用二分搜索来找到这个最低月付款。 但是,我对如何退出while循环感到困惑,因为它似乎创建了一个无限循环,并且永远不会访问我所拥有的break语句,这意味着,balance永远不会等于零。 如何退出while循环? 我意识到设置平衡 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM