如何在不返回 int 的情况下从 int 方法打印字符串?

How to print string from an int method without returning int?

我正在研究一种方法。它returns int.

int top() {
   return q.peek();
}

上述方法对于非空队列工作正常。不适用于空队列。

当我修改这段代码来处理空队列时,会是这样

int top() {
   if (q.isEmpty()) {
      System.out.println("queue is empty"); // I want to end the process here 
      return -1; // I don't want this line to return -1
   }
   return q.peek(); // I don't want this line to execute
}

System.out.println(q.top());

如果队列为空,结果会是这样

queue is empty
-1

我希望它只打印 queue is empty,而不是 -1。

那么在 Java 这种情况下,有没有办法只修改 top() 方法?

是否要仅在队列不为空时打印返回的 int,否则打印“队列为空”?如果是这样,做这样的事情怎么样:

int top() {
  if (q.isEmpty()) {
    return -1;
  }
  return q.peek();
}

System.out.println(q.top() == -1 ? "queue is empty" : q.top());

还有一个选项:

int top() throws Exception {
  if (q.isEmpty()) {
    throw new Exception("queue is empty");
  }
  return q.peek();
}

try {
  System.out.println(q.top());
} catch (Exception e) {
  System.out.println(e.getMessage());
}

当方法签名 return int 时,您不应尝试 return 另一种类型,因为它会使阅读您代码的其他成员感到困惑。

如果您无法修改 System.out.println() 方法,最好的选择是在您的方法中抛出异常,就像 Caitlyn Wiley 给出的答案一样。

另一个可接受的方法是 return 一个表示错误的整数(就像你对 -1 所做的那样),只要你有好的文档来解释它。

如果您能够将 System.out.println(q.top()); 更改为仅调用 q.top();,您只需从方法内部打印即可:

int top() {
   if (q.isEmpty()) {
      System.out.println("queue is empty");
      return -1;
   }
   System.out.println(q.peek());
   return q.peek();
}

如果您无法更改有关 System.out.println(q.top()) 语句的任何内容,您需要 return 改为 String 并使用 Integer.toString 将值转换为 String:

String top() {
    if (q.isEmpty()) {
        return "queue is empty";
    }
    return Integer.toString(q.peek());
}

我刚刚找到了另一种无需更改 top() 数据类型即可解决此问题的方法。

int top() {
    if (q.isEmpty())
        System.out.println("queue is empty");
        System.exit(0);
    return q.peek();
}

大家怎么看?

谢谢你对我问题的每一个回答。我很感激。 所有答案都非常有用。