当前位置: 首页 > 知识库问答 >
问题:

PHP平均计算器不能正确显示结果

荆修明
2023-03-14

我创建一个PHP计算器,需要使用以下类,然后打印出用户的名字和他们取得的平均分数。这是我到目前为止的代码,但是它没有正确显示,它说有丢失的参数和未定义的变量,但是我不确定我哪里出错了!

<?php 

class person {

public $name;

}
class student extends person {

function student ($name, $grade1, $grade2) {
    if(is_numeric($grade1) && is_numeric($grade2)){
        $grades = array($grade1, $grade2);
    }
    elseif (is_numeric($grade1)) {
        $grade2 = 0;
    }
    else {
        $grade1 = 0;
    }
}

function average ($grades) {
     $length = count($grades);
     $total = 0;

  for ($i = 0; $i < $length; $i++) {
    $total = $total + $grades[i];
  }

  $average = $total / $length;
  return $average;

}
 }

$person1 = new student ($_POST['firstName'], $_POST['firstGrade1'],  $_POST['firstGrade2']);
$person2 = new student ($_POST['secondName'], $_POST['secondGrade1'], $_POST['secondGrade2']);
$person3 = new student ($_POST['thirdName'], $_POST['thirdGrade1'], $_POST['thirdGrade2']);

echo "<br/> $person1->name" . "achieved an average of" . "$person1->average();";
echo "<br/> $person2->name" . "achieved an average of" . "$person2->average();";
echo "<br/> $person3->name" . "achieved an average of" . "$person3->average();";

?>

错误消息:警告:在C:\Program Files(x86)\EasyHP-DevServer-14.1VC11\data\localweb\my portable Files\练习4\average中调用的student::average()缺少参数1。php位于第40行,在C:\Program Files(x86)\EasyHP-DevServer-14.1VC11\data\localweb\my portable Files\练习4\average中定义。php第22行

注意:未定义变量:C:\Program Files(x86)\EasyHP-DevServer-14.1VC11\data\localweb\my portable Files\练习4\average中的等级。php第23行

警告:在C:\Program Files(x86)\EasyPHP-DevServer-14.1VC11\data\localweb\我的便携式文件\练习4\第30行上的average.php中除以零

共有2个答案

东方和志
2023-03-14

以下是增强类。您会注意到它们有构造函数和函数来请求变量。私有变量通常是首选方法,因为它们受到保护,因此不能在类外修改。

class person {
    private $name = "";

    public function __construct ($nameV) {
        $this->name = $nameV;
    }

    public function getName() {
        return $this->name;
    }
}

class student extends person {

    private $grades;

public function __construct ($name, $grade1, $grade2) {
    parent::__construct($name);

    if ( ! is_numeric($grade1)) { $grade1 = 0; }
    if ( ! is_numeric($grade2)) { $grade2 = 0; }
    $this->grades = array($grade1, $grade2);
}

    public function average () {
        $length = count($this->grades);
        $total = 0;

      for ($i = 0; $i < $length; $i++) {
        $total = $total + $this->grades[$i];
      }

      $average = $total / $length;
      return $average;
    }
 }

导出代码如下所示:

echo "<br/>" . $person1->getName() . " achieved an average of " . $person1->average();
echo "<br/>" . $person2->getName() . " achieved an average of " . $person2->average();
echo "<br/>" . $person3->getName() . " achieved an average of " . $person3->average();

由于没有表格,我使用以下数据进行了测试:

$person1 = new student ("XYZ", 1, 2);
$person2 = new student ("XYZ2", 100, 20);
$person3 = new student ("XYZ3", 95, 94);

其中出口:

XYZ achieved an average of 1.5
XYZ2 achieved an average of 60
XYZ3 achieved an average of 94.5
尉迟宪
2023-03-14

您似乎没有返回$等级变量。它可能没有定义,因为您没有返回任何东西。

您的方法:

function student ($name, $grade1, $grade2) {
    if(is_numeric($grade1) && is_numeric($grade2)){
        $grades = array($grade1, $grade2);
    }
    elseif (is_numeric($grade1)) {
        $grade2 = 0;
        $grades = array($grade1, $grade2);
    }
    else {
        $grade1 = 0;
        $grades = array($grade1, $grade2);
    }
    return $grades
}

需要看起来更像那样。您还需要实际将grade1和grad2添加到您返回的数组中的备用条件。

 类似资料:
  • 我是机器人和爪哇的新手。我已经构建了一个计算器,当我输入3个输入时,我需要它来自动显示结果,但我不知道该怎么做。 我将multiply添加到了一个文本视图(通过属性onclick),它可以工作,但我希望它能在textview中自动显示。

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 本文向大家介绍PHP计算加权平均数的方法,包括了PHP计算加权平均数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP计算加权平均数的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 我正在尝试匹配从服务器下载的文件的md5sum。只有当总和匹配时,处理才会继续。 上面的代码并没有每次为某些文件正确提供md5sum。 当我去控制台检查md5sum时 下载文件的vimdiff未提供任何差异。。下载后的文件是正确的。 我无法在上述代码中看到问题。 我正在尝试更改缓冲区大小。但没有运气,所以我猜这不是因为缓冲区大小等。 问候Dheeraj Joshi

  • 有人能告诉我代码有什么问题吗?它只显示第一行和表头information.thks

  • 我正在尝试使用一个名为'jQuery.InstagramFeed'的库,它允许我在不使用访问令牌的情况下显示用户feed中的图像。所以,我一直在尝试使用它,但是,出于某种原因,它并没有向我展示任何东西。 我已经研究了几个星期了,我已经尝试了在这里的很多帖子(以及其他论坛)中提出的很多解决方案,比如下面这些: TypeError:$不是函数调用jQuery函数 “未捕获的TypeError:$不是函