我希望函数 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; ^ 我希望它绝对不返回任何东西而不是零。

#1楼 票数:2

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

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

#2楼 票数:2

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

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

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

#3楼 票数:0

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

  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; 
} 
~~~~~~~~~~~~~~~~~~~

  ask by Arenevian translate from so

未解决问题?本站智能推荐:

1回复

当nextInt等于零时,如何终止程序?

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

当RSS供稿数等于零时,向网站添加文本

RSS提要中包含零项时,如何向我们的网站(http://www.climatescience.cam.ac.uk/)添加文本? 例如,如果没有安排会议,则显示文本“当前没有安排会议”
2回复

在接口中返回等于零的值

我最近一直在用Java制作类似Tetris的游戏,我有一个接口IBlocks,它遍历ConsBlock和EmptyBlock ( ConsBlock是一个列表, ConsBlock是一个块, ConsBlock是一个IBlock列表,由于某种原因,我老师想要的。 我在界面中具有getfirs
1回复

为什么当我单击增加和减少时num等于零,当它在里面烘烤时等于num也返回零

为什么每次点击增加或减少后num = 0 ? 方法increasedecrease(...)始终返回0但在OnClickListner内将其值更改为实数。 谁能解释这个行为?
2回复

为什么listviewgetcount()等于零?

我在计算 ListView 中的项目数时遇到问题。 我正在将值推送到 firebase 数据库中的文件夹中。 当我将它们拉到单独的活动中时,我会得到一个我 push 的值的列表。 问题是我想知道列表中有多少项。 我尝试使用 listView.getCount() 和 arrayList.size()
1回复

为什么当计数变为零时,CountDownLatch有时不释放线程?

我正在构建一个简单的对话框,可以通过按按钮或Esc按钮将其关闭。 我在关闭对话框之前使用CountDownLatch等待,并从各种侦听器中调用.countDown() 。 我遇到了以下问题-在窗口上按“ X”调用.countDown()并导致对话框被.countDown() ,而按按钮则导
2回复

如何使注入的模拟等于零?

我有一堂课,看起来像这样: 我正在尝试在if语句的内容中进行单元测试,以确保我的代码正在执行所需的操作。 现在,我的单元测试看起来像这样: 当然,这不起作用,这就是为什么我在这里。 简而言之,我该如何模拟==运算符? 旁注:很抱歉,如果这是一个愚蠢的问题或简单的解决方法。 当
7回复

为什么此减法不等于零?

我在我的ColdFusion代码中碰巧遇到了这些值,但Google计算器似乎有相同的“错误”,其差为非零。 416582.2850-411476.8100-5105.475 = -2.36468622461E-011 http://www.google.com/search?hl=zh_