我提前为我的英语道歉,而不是我的第一语言。
程序简述:在算术序列中生成随机第一项并生成随机差异以获得下一个项。然后要求用户进入第六学期。
Integer.parseInt(i.getMessage().toLowerCase().replace(c, "").replace(",", ""));
对于前五个术语,差异保持不变并且是正确的算术序列。但是当到第六个学期时,差异会发生变化,而且序列不再正确。例如,正确的序列可以是2,4,6,8,10,12。这里的区别是2.但是当程序运行时,它就像2,4,6,8,10,15那样不正确。所以我的问题是如何保持随机差异始终如一? 感谢
答案 0 :(得分:1)
我认为您的diff
变量存在冲突。一个是静态的Project.diff
,另一个是本地的,diff
。 calcSeq
中的一个将始终使用静态值,即0。您的for循环下的那个可能使用diff
变量赋值下的本地随机keyboard
。要使它们成为相同的引用,请从第二个int
前面移除diff
,然后执行diff = Math.random...
<强>更新强>
我并不完全相信你需要calcSeq
方法。您的代码可以简化并实现您想要完成的任务。例如,您正在打印term6
,然后要求输入term6
,因此如果您输入最后一个号码,则永远不会得到错误答案。逻辑或代码是(1)获得随机开始和随机差异(2)打印出序列,每次添加diff
(3)提示用户下一个答案。这段代码就是这么做的。
import java.util.Scanner;
public class Project{
static int diff = 0;
public static int printSequence(int start, int length){
System.out.println(start);
for (int i = 1; i <= length; i=i+1){
start = start + diff;
System.out.println(start);
}
return start;
}
public static void main(String[] args){
Scanner keyboard = new Scanner(System.in);
diff = (int)(Math.random()*20)+1;
int term1 = (int)(Math.random()*10)+1;
int term6 = printSequence(term1, 4) + diff;
System.out.print("Enter the sixth term of this arithmetic sequence: ");
int ans = keyboard.nextInt();
if (ans == term6){
System.out.println("That is the correct answer.");
}
else {
System.out.println("That is incorrect. Try again.");
}
}
}