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

根据用户指示执行多次的循环

竺捷
2023-03-14

编写一个程序,根据CSE 1341教学大纲计算当前成绩。程序应该提示用户输入他们的名字和姓氏。然后,它将这些名称作为字符串传递给CSE1341Grade类的第二个方法。第二种方法的名称为calcGrade。此方法将提示用户输入考试分数计数、测验分数计数和实验室分数计数。

然后,它将利用重复结构根据之前输入的计数提示考试成绩、测验成绩和实验室成绩。例如,如果用户输入的考试分数计数为2;然后程序将循环2次以输入两个考试分数;同样,测验和实验室成绩的统计也是如此。

假设你有100%的出勤记录,你将获得5%的出勤分数。使用教学大纲来确定每个类别的权重,例如考试、测验和实验室。因为你的出勤率很高,所以在总分上加5%。假设:所有的考试、实验和测验分数都是满分。样本运行:

java CSE1341Grade

名字:詹姆斯

姓氏:邦德

你有多少考试成绩?1.

你有多少个测验分数?2.

你有多少实验室成绩?2.

参加考试1:90分

进入测验1,分数:80

进入测验2,分数:80

进入实验1:90分

进入实验2:90分

总分:84.55

詹姆斯·邦德你的成绩是A: B

^^这是我的家庭作业,这是我到目前为止所做的

import java.util.Scanner;

public class CSE1341Grade
{
    public static void main(String [] args)
    {
        //set up Scanner for user input, prompt for first name, define variable, and print      response
        Scanner s = new Scanner(System.in);
        System.out.print("First name: ");
        String first = s.nextLine();
        System.out.printf(" %s\n", first);

        //prompt user for last name, define variable, and print response
        System.out.print("Last name: ");
        String last = s.nextLine();
        System.out.printf(" %s\n", last);
    }

    public static void calcGrade(String first, String last)
    { 
        //prompt user for number of exam grades, define exam variable, print response
        System.out.print("How many exam grades do you have? ");
        String exam = s.nextLine();
        System.out.printf(" %s\n", exam);

        //prompt user for number of quiz grades, define quiz variable, print response
        System.out.print("How many quiz grades do you have? ");
        String quiz = s.nextLine();
        System.out.printf(" %s\n", quiz);

        //prompt user for number of lab grades, define lab variable, print response
        System.out.print("How many lab grades do you have? ");
        String lab = s.nextLine();
        System.out.printf(" %s\n", lab);

        while (exam != -1)
        {
            System.out.print("Enter " exam 1 " score: ", ++exam)



        //define variables for computations
        int score = 0;
        int grade = 0;

        //if statement to determine the final letter grade
        if(score >= 90 && score <=100){
            grade = 'A'; }
        else if(score >=80 && score < 90){
            grade = 'B'; }
        else if(score >= 70 && score < 80){
            grade = 'C'; }
        else if(score >=60 && score < 70){
            grade = 'D'; }
        else {
            grade = 'F'; }
    }
}

我的问题是如何创建一个循环,提示用户需要多少考试成绩。

共有3个答案

程承恩
2023-03-14

伪代码:

function(int n) {
    for (i = n, i > 0, i--) {
        \\prompt user
    }
}

这应该给你一个如何做的大致想法,即取这个量,从它中减去1,直到你达到0,每次都得到数据并做它需要做的事情。不要忘记确保n永远不会小于零(无效),并且n是一个整数。否则,最好让该函数简单地提示用户一个金额,然后将该金额传递给实际使用它的函数。或者,创建一个函数,该函数迭代n次,并调用作为参数传递给它的函数多次(很难正确操作)。

松成和
2023-03-14

我喜欢做一个循环,并继续要求用户输入,直到得到我想要的结果:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    boolean shouldContinue = true;

    while(shouldContinue) {

        // do program logic

        System.out.print("Should we continue? [Y or N] >> ");

        if (input.nextLine().equalsIgnoreCase("N")) {

            shouldContinue = false;

        }

    }

}

这是一种相对“结构化”的方式,可以进行交互循环,并根据用户的需要反复运行程序。

--更新--

要提前完成大量已知的迭代,只需将其导入循环计数器:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.print("Number of grades to enter [number] : ");

    int numberOfTimesToIterate = input.nextInt();

    for (int i = 0; i < numberOfTimesToIterate; i++) {

        // do stuff here

    }

}
唐弘和
2023-03-14

我在评论中对你的代码做了一些修改。。

在这里你可以看到差异

http://www.mergely.com/LIckVifT/

注意:它仍然没有完成你的家庭作业:-)

更新:因为foor循环中的索引并不重要,所以可以这样使用它:

 for (int i = 1; i <= examsCount; i++) {
      // using i+1 to print starting from 1 instead of 0
      System.out.print("Enter " + i + " score: ");

而不是

for (int i = 0; i < examsCount; i++) {
      // using i+1 to print starting from 1 instead of 0
      System.out.print("Enter " + (i + 1) + " score: ");
 类似资料:
  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 我正在使用以下项目结构Project ---子项目1 ---子项目2 ---子项目3 |build.gradle |设置。格拉德尔 子项目2取决于子项目1 子项目3取决于子项目2 对于所有子项目,我需要有任务“构建”,这将是每个项目的自定义任务。但在“构建”之前必须执行一些初始化任务(对于所有子项目都相同)。问题是,这个初始化任务必须在构建期间执行一次,而且只能执行一次,无论我在构建什么-根项目或

  • 问题内容: 我有一些关于jsfiddle的演示: HTML: JavaScript: 输入更改(甚至复选框)时,将调用日志过滤器。 仅当文本输入更改时,如何更改它并触发日志过滤器? 问题答案: 这是因为即使范围中的一个变量发生更改,Angular也会运行并更新所有范围属性。这称为“脏污检查”。 了解有关角度工作原理的更多信息:http : //www.sitepoint.com/understan

  • 和 break 语句相比,continue 语句的作用则没有那么强大,它只会终止执行本次循环中剩下的代码,直接从下一次循环继续执行。 仍然以在操作跑步为例,原计划跑 10 圈,但当跑到 2 圈半的时候突然接到一个电话,此时停止了跑步,当挂断电话后,并没有继续跑剩下的半圈,而是直接从第 3 圈开始跑。 continue 语句的用法和 break 语句一样,只要 while 或 for 语句中的相应位

  • 问题内容: Java:GC在JVM中执行的频率是多少?每一秒?每一分钟?还是随机的,取决于内存大小?我只想有个主意。 谢谢。 问题答案: 这取决于内存使用情况和存储对象的堆。看这个 http://javarevisited.blogspot.com/2011/04/garbage-collection-in- java.html 它不依赖于时间。它仅取决于新的内存要求和可用内存。

  • 到目前为止,我们主要通过.await来使用 Futures,它将阻塞当前任务,直到特定的Future完成。但是,真正的异步应用程序,通常需要同时执行几个不同的操作。 Executing Multiple Futures at a Time 在本章中,我们将介绍几种,同时执行多个异步操作的方法: join!:等待全部 Futures 完成 select!:等待几种 Futures 之一,完成 Spa