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

慕课fi练习失败-Java编程I[Averageoftwonumbers.Java]“correctOrder”不明确错误文本

锺离穆冉
2023-03-14

抱歉,如果这不是正确的地方,但我不明白为什么我的mooc。fi提交不断被拒绝。原因有点模棱两可。我的意思是以双精度浮点数的形式求两个数的平均值。我将第二个变量创建为double,以强制解决方案为float,但我不知道这是否是导致问题的原因。据我所知,有几种方法可以强制回答或将答案转换为浮点数。我首先尝试创建第三个变量,即double sum=firstnumber-secondnumber,并将其输出(sum/2),但也失败了。

    import java.util.Scanner;

public class AverageOfTwoNumbers {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Give the first number: ");
        int firstnumber = Integer.valueOf(scanner.nextLine());
        System.out.println("Give the second number: ");
        double secondnumber = Double.valueOf(scanner.nextLine());
        System.out.println("The average is " + ((firstnumber + secondnumber) / 2));


import java.util.Scanner;

public class AverageOfTwoNumbers {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Give the first number: ");
        int firstnumber = Integer.valueOf(scanner.nextLine());
        System.out.println("Give the second number: ");
        double secondnumber = Double.valueOf(scanner.nextLine());
        double sum = firstnumber + secondnumber;
        System.out.println("The average is " + (sum /2));

我得到了以下测试失败的原因:

失败:AverageOfWonNumber最正确的顺序执行程序,以便读取和打印交替进行。先打印,然后阅读,然后打印,等等。。。

测试现场的输出:


import fi.helsinki.cs.tmc.edutestutils.MockStdio;
import fi.helsinki.cs.tmc.edutestutils.Points;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

@Points("01-21")
public class AverageOfTwoNumbersTest {

    @Rule
    public MockStdio io = new MockStdio();

    @Test
    public void correctOutputFirstExample() {
        correctOutput("8", "2");
    }

    @Test
    public void correctOutputSecondExample() {
        correctOutput("9", "2");
    }

    private void correctOutput(String first, String second) {
        String input = first + "\n" + second + "\n";
        io.setSysIn(input);
        AverageOfTwoNumbers.main(new String[]{});
        String[] lines = new String[]{"Give the first number:",
            "Give the second number:",
            "The average is " + (1.0 * Integer.valueOf(first) + Integer.valueOf(second)) / 2
        };

        List<String> rows = rows(io.getSysOut().trim());

        assertEquals("The output was expected to contain " + lines.length + " line" + ((lines.length == 1) ? "" : "s") + ". Now it contained " + rows.size() + ".", lines.length, rows.size());
        for (int i = 0; i < rows.size(); i++) {
            assertEquals("Line " + (i + 1) + " output was incorrect when the input was:\n" + input + "\nExpecting output:\n" + lines[i] + "\nBut the output was:\n" + rows.get(i), lines[i].trim(), rows.get(i).trim());
        }
    }

    @Test
    public void readingIntegerInput() {
        List<String> code = code("AverageOfTwoNumbers.java");
        assertTrue("Read integers from the user input, tip: Integer.valueOf(...).", code.stream().filter(l -> l.contains("Integer.")).count() > 0);
    }

    @Test
    public void correctOrder() {
        List<String> code = code("AverageOfTwoNumbers.java");
        int count = countOccurrences(code, "System.out.println.*Integer.*System.out.println.*Integer.*System.out.println");
        assertTrue("Implement the program so that reading and printing alternate.\nFirst printing, then reading, then printing, etc...", count == 1);
    }

    private List<String> rows(String out) {
        return Arrays.asList(out.split("\n"));
    }

    private List<String> code(String file) {
        try {
            return Files.lines(Paths.get("src", "main", "java", file)).collect(Collectors.toList());
        } catch (IOException e) {
            fail("Reading file " + file + " failed. Write your code in the file " + file);
        }

        return new ArrayList<>();
    }

    private int countOccurrences(List<String> lines, String search) {
        return countOccurrences(lines.stream().reduce("", (a, b) -> a + " " + b), search);

    }

    private int countOccurrences(String str, String search) {
        int count = 0;
        while (str.matches(".*" + search + ".*")) {
            str = str.replaceFirst(search, "");
            count++;
        }

        return count;
    }

}

共有1个答案

陆臻
2023-03-14

失败的测试是:

正确顺序执行程序,以便读取和打印交替进行

这个自动测试的编写方式是,您必须在第二个和第三个System.out.println之间编写整数测试并不关心您对整数做了什么,它只是必须提到。这是修复它的一种方法:

    System.out.println("Give the first number: ");
    int firstnumber = Integer.valueOf(scanner.nextLine());
    System.out.println("Give the second number: ");
    double secondnumber = Integer.parseInt(scanner.nextLine());
    
 类似资料:
  • 1.课堂练习列表查询 通过该接口可以获取课堂练习数据, 地址为: https://spark.bokecc.com/api/exercise/list 需要传递以下参数: 参数 说明 userid ⽤户 id,不可为空 videoid 视频 id,不可为空 返回字段含义如下: 参数 说明 id 练习id title 练习名称 appeartime 练习出现的时间 isjump 是否允许跳过 (0否

  • 慕课堂智慧教学(以下简称“慕课堂”)是中国大学MOOC在慕课平台的基础上研发的线上线下混合式智慧教学工具,于2019年3月6日正式发布。 慕课堂是作为提升课堂教学效率的智慧教学工具,教师可以应用慕课堂创建关联线上课堂或独立线下课堂 完成线上备课、 线下混合式授课、线上查看汇总(线上学习+线下课堂)数据, 提供一体化教学管理、更智能的课堂互动、触手可及的交互体验,构建课堂教学的整体方案,帮助老师实践

  • 学校老师可以在中国大学 MOOC平台,基于本校的MOOC或学校引进的外校MOOC创建并使用关联慕课堂。提示:老师如需利用外校MOOC开展慕课堂教学,要先由学校教务处联系各区域运营人员开通引用课程服务。 老师进入中国大学 MOOC平台(www.icourse163.org),登录账号,点击右上角头像的【课程管理后台】: 点击左侧导航的【慕课堂管理】,点击【新建慕课堂】: 选择【与线上关联的课堂】创建

  • 4. 编程练习 哲学家就餐问题。这是由计算机科学家Dijkstra提出的经典死锁场景。 原版的故事里有五个哲学家(不过我们写的程序可以有N个哲学家),这些哲学家们只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候就必须使用餐具,而餐桌上的餐具是有限的,原版的故事里,餐具是叉子,吃饭的时候要用两把叉子把面条从碗里捞出来。很显然把叉子换成筷子会更合理,所以:一个哲学家需要两根筷

  • 在中国大学 MOOC 平台已开设线上课程(MOOC、SPOC、在线开放课程)的课程团队老师,可基于自己的线上课程创建并使用关联慕课堂(助教无法使用慕课堂),通过电脑端【课程管理后台】,进入自己当前学期的mooc或spoc课程: 点击课程左侧导航的【慕课堂管理】进入慕课堂管理界面: 点击【+创建课堂】,输入课堂名称、上课时间等,点击【保存】,课堂创建成功,并且系统会分配六位字符的课堂码,学生可以在A

  • 从多个github讨论中,我发现这是一个windows网络错误。 这个问题有解决办法吗?我应该降级docker版本还是安装其他东西。 我正在使用windows容器。运行docker版本客户端:版本:17.06.0-CE API版本:1.30 Go版本:Go1.8.3 Git提交:02C1D87构建:周五6月23日21:30:30 2017 OS/arch:Windows/amd64 如何解决lin