当前位置: 首页 > 面试题库 >

方法不能应用于给定类型

印振国
2023-03-14
问题内容

在我的程序中,我试图throwDice在另一个类中调用该方法。

public class SimpleDice {  
  private int diceCount;

  public SimpleDice(int the_diceCount){
    diceCount = the_diceCount;
  }

  public int tossDie(){
    return (1 + (int)(Math.random()*6));
  }

  public int throwDice(int diceCount){
           int score = 0;
           for(int j = 0; j <= diceCount; j++){
            score = (score + tossDie());
           }
           return score; 
         }
}

import java.util.*;

public class DiceTester {
public static void main(String[] args){

  int diceCount;
  int diceScore;

    SimpleDice d = new SimpleDice(diceCount);

    Scanner scan = new Scanner(System.in);
    System.out.println("Enter number of dice.");
    diceCount = scan.nextInt();
    System.out.println("Enter target value.");
    diceScore = scan.nextInt();

    int scoreCount = 0;

    for(int i = 0; i < 100000; i++){
     d.throwDice();
      if(d.throwDice() == diceScore){
        scoreCount += 1;
      }
    }
    System.out.println("Your result is: " + (scoreCount/100000));
}
}

当我编译它时,会弹出一个错误d.throwdice(),提示无法应用。它说它需要一个int,没有参数。但是我diceCountthrowDice方法中调用了一个int
,所以我不知道这是怎么回事。


问题答案:
for(int i = 0; i < 100000; i++){
 d.throwDice();
  if(d.throwDice() == diceScore){
    scoreCount += 1;
  }
}

此代码有两件事:

  1. 它调用时throwDice不带int(您已将其定义为public int throwDice(int diceCount),因此必须给它一个int
  2. throwDice每个循环调用两次

您可以这样解决:

for(int i = 0; i < 100000; i++){
 int diceResult = d.throwDice(diceCount); // call it with your "diceCount"
                                          // variable
  if(diceResult == diceScore){ // don't call "throwDice()" again here
    scoreCount += 1;
  }
}


 类似资料:
  • 问题内容: 我正在创建一个程序,该程序生成0到9之间的100个随机整数,并显示每个数字的计数。我使用的是十个整数数组 counts 来存储0、1,…,9s的数量。) 编译程序时出现错误: RandomNumbers.java:9:错误:类RandomNumbers中的方法generateNumbers无法应用于给定类型; generateNumbers(); 必需:int [] found:gen

  • 我正在创建一个程序,该程序生成 0 到 9 之间的 100 个随机整数,并显示每个数字的计数。我使用一个由十个整数,计数组成的数组来存储0,1,...,9s的数量。 当我编译程序时,我得到错误: RandomNumbers.java:9:错误:类RandomNumbers中的方法generateNumbers不能应用于给定的类型;< br > generate numbers(); 必需:int[

  • 我把这个程序作为我的一个类的项目,编译后,我得到了这个错误: java:21:错误:类Program09中的方法calculateCelsius无法应用于给定类型;双cTemp=calculateCelsius();^必需:int found:无参数原因:实际参数列表和形式参数列表的长度不同Program09。java:24:错误:类Program09中的方法calculateCelsius无法应

  • 无法使用以下消息进行编译: 接口java.util.stream.stream 中的方法映射不能应用于给定类型;[ERROR]必需:java.util.function.function<?超级java.util.map ?extends R>[err]找到:java.util.function.function [err]原因:无法推断类型变量R[err](参数不匹配;java.util.fun

  • 问题内容: 我有以下Java代码: 而且我不断收到错误消息:“无法将构造函数应用于给定类型” …这是否意味着超类的子类在构造函数中必须具有与超类相同数量的参数?我已经把头撞在墙上一个小时了。 问题答案: 子类不必有“相同数量的构造为超参数”任何构造函数,但它 确实 需要调用一些它的父类的构造函数从自己的构造。 如果超类具有no- arg构造函数,则默认情况下会被调用,如果省略了对超类构造函数的显式

  • 我是新来的工作与优先级队列和格式化此代码错误,我想让我的优先级是一个城市的直线距离,但我不相信我传递了这个信息正确的队列。查看API,我需要将SLD设置为比较器 [CNNVD]Public PriorityQueue PriorityQueue多个元素的排序问题(CNNVD-200605-045)Public PriorityQueue(int初始容量,比较器比较器) 创建具有指定初始容量的Pri