【问题标题】:How to create a method that repeats a function?如何创建重复功能的方法?
【发布时间】:2016-04-18 21:49:18
【问题描述】:

大家好,我是该网站的新手,这是我在 Java 编程课上提出的第一个问题。 我必须创建一个程序来问一个数学问题并告诉用户他是对还是错,但要求还规定我需要创建一个方法来生成一个新问题,如果第一个问题是正确的,所以当计算机问什么是 5 乘以 5 并且用户输入 25 该方法应该生成两个新的随机数并向用户询问结果。

到目前为止,这是我的代码。我不期待答案,因为这是一项学校作业,但如果有人能给出一个方向,我将不胜感激,因为这是我的第一门 Java 大学课程。

import java.security.SecureRandom; //program uses class SecureRandom
import java.util.Scanner; //program uses class Scanner

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

    System.out.println("Alex - Assignment 4\n");

    //create Scanner for input from command window
    Scanner input = new Scanner(System.in);

    //randomNumbers object will produce secure random numbers
    SecureRandom randomNumbers = new SecureRandom();

    //generates two random numbers from 1 to 9 excluding 0
    int random1 = 1+ randomNumbers.nextInt(9);
    int random2 = 1+ randomNumbers.nextInt(9);

    int answer; // declares answer from user

    //calculates real result of first integer times second integer
    int result = (random1 * random2);

    //display generated integers
    System.out.printf("What is %d times %d?\n",random1, random2);

    do 
    {
    answer = input.nextInt(); //keeps taking answer from user if wrong
     if(answer == result) //if correct answer then print very good!
      System.out.println("Very Good!");
     else // if wrong answer then print no please try again
      System.out.println("No. Please try again");
    }
    while (answer != result);
 }

【问题讨论】:

  • 您应该移动生成数字并提示用户的代码,直到他们将其正确放入方法中;然后,添加一个新循环来重复调用该方法
  • 既然这似乎是家庭作业,我不想放弃太多。但是看起来您已经了解了基础知识……您了解了循环(您有一个检查答案)。因此,您也需要循环创建问题步骤。您只需要弄清楚循环的开始/结束位置(即其中的内容)。

标签: java methods repeat


【解决方案1】:

我认为您的循环语句工作的基本方式是混淆的。 do 语句将执行一次其代码块,并且不会自行循环。一个while循环将重复,直到你告诉它停止。因此,在不告诉你具体如何组织你的作业的情况下;)你应该看看这两件事。但是您的代码确实会编译,并且会执行您希望它执行的操作。因此,这意味着您遇到的问题出在代码的逻辑方面。这意味着计算机无法根据您的代码结构理解何时执行您的代码部分。

所以我的建议是先尝试用简单的英语(伪代码)写出来,这样您就可以弄清楚程序的逻辑应该如何运行,然后将其翻译成代码。有时只是说“我希望 x 在 y 发生时发生。但我只希望在事件 z 发生时才发生这种情况。”可以帮助您从逻辑上理解某事必须如何运作。

祝你好运

【讨论】:

    【解决方案2】:

    您可以在生成随机数之前添加一个 while 循环,该循环将重复到answer== "exit"。沿着这些路线的东西会很好用

    【讨论】:

    • answer 是一个int,所以它永远不会等于"exit",如果可以的话,你不会想使用== 来检查。
    • 你是对的,answer==-1 应该可以代替,因为答案总是肯定的
    【解决方案3】:

    您应该将break; 语句放在底部else 循环中,并将public static void 声明中的所有内容放在“无限”for 循环中。当用户输入错误答案时,程序将进入else 循环并中断。否则,它将继续在“无限”for 循环中重复。这是一个示例代码,展示了您可以做什么。

    import java.security.SecureRandom; //program uses class SecureRandom
    import java.util.Scanner; //program uses class Scanner
    
    public class CAI 
    {
    public static void main(String[] args)
    {   
    
    boolean loopTest = false;
    
    while (loopTest= true)
    {
    
    System.out.println("Alex - Assignment 4\n");
    
    //create Scanner for input from command window
    Scanner input = new Scanner(System.in);
    
    //randomNumbers object will produce secure random numbers
    SecureRandom randomNumbers = new SecureRandom();
    
    //generates two random numbers from 1 to 9 excluding 0
    int random1 = 1+ randomNumbers.nextInt(9);
    int random2 = 1+ randomNumbers.nextInt(9);
    
    int answer; // declares answer from the user
    
    //calculates real result of first integer times second integer
    int result = (random1 * random2);
    
    //display generated integers
    System.out.printf("What is %d times %d?\n",random1, random2);
    
    do 
    {
    answer = input.nextInt(); //keeps taking answer from user if wrong
     if(answer == result) //if correct answer then print very good!
      System.out.println("Very Good!");
     else // if wrong answer then print no please try again
      System.out.println("No. Please try again");
      break;
    }
    while (answer != result);
    }
    
    }
    }
    

    *请注意,最后一个} 未包含在您的程序中。

    【讨论】:

    • while(true) 比你的 for 循环容易得多。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2014-03-18
    相关资源
    最近更新 更多