【问题标题】:using a void method with two int parameters instead of an int?使用带有两个 int 参数而不是 int 的 void 方法?
【发布时间】:2014-12-11 08:32:01
【问题描述】:

我使用 int 方法运行这个程序没有问题;但是我希望能够学习如何使用void 方法。

我知道void 中不需要return 语句,对于带有两个int 参数的void。在我的书中它说参数应该写成(int a, int b)

但是,在我的第 16 行和第 17 行代码中

sum = computeSum(num1, num2);
product = computeProduct(num1, num2);)

我收到错误 incompatible types, void cannot be converted to int

如何纠正此问题以供将来参考?非常感谢!

 import java.util.Scanner;

 public class Lab6
 {
     public static void main (String [] args)
     {      
         //create a scanner object for receiving user input
         Scanner keyboard = new Scanner (System.in);
         int num1, num2, sum, product;

         System.out.println ("Please enter an integer: ");
         num1 = keyboard.nextInt();
         System.out.println ("Please enter another integer: ");
         num2 = keyboard.nextInt(); 

         sum = computeSum(num1, num2);
         product = computeProduct(num1, num2);
     }

     public static void computeSum(int num1, int num2)
     {
         int sum = 0;
         sum = num1 + num2; 

         System.out.println ("The sum of your integers is " + sum);
     }

     public static void computeProduct(int num1, int num2)
     {
         int product = 0; 
         product = num1 * num2;

         System.out.println("\nThe product of your integers is: " + product);
     }
 }

【问题讨论】:

  • void 表示方法不返回值,那么您将如何获得产品?唯一的方法是设置一个在调用方法和被调用方法中都可见的变量。

标签: java methods parameters error-handling void


【解决方案1】:

Steve Bourne提议将Algol68的VOID定义为MODE VOID = STRUCT()。当史蒂夫到达Bell Labs 时,他说服丹尼斯在 C 中添加 void 作为一种类型。它保存了指令加载寄存器作为返回值。此外,当史蒂夫到达实验室时,C 类型就像 PL/1,即从您喜欢的任何基础偏移。他们更改为 A68 类型,但此更改的具体原因现已丢失。其他一些 A68isms 以 C 结尾。 推测:Std C 可以考虑typedef struct{}void ...

【讨论】:

    【解决方案2】:

    正如你所说,void 方法不返回值,所以 sum = computeSum(num1, num2); 没有任何意义,因为 computeSum 不返回任何内容。

    您应该尝试使用...

    computeSum(num1, num2);
    computeProduct(num1, num2);
    

    相反...

    【讨论】:

    • 谢谢!我想通了,我把程序复制了一遍,忘了把它拿出来。谢谢!
    【解决方案3】:

    方法computeSum()的返回类型是void,即它什么也不返回,这意味着它不能被分配给一个变量。因此,以下是不可能的:

    sum = computeSum(num1, num2);
    

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 2016-06-19
      • 2021-01-06
      • 2010-12-09
      • 2013-07-11
      相关资源
      最近更新 更多