【发布时间】:2016-02-25 05:19:36
【问题描述】:
/*IMO 我已经完成了大部分项目,但我无法将注意力集中在数组的部分上。我应该给它分配值,然后让它显示在屏幕上,就像现在程序运行时所做的那样,但它没有通过数组。请帮助它让我发疯。
作业:
对于这个项目,您将创建一个程序,要求用户输入一个小于 20 的正整数值。请注意,该程序只会从用户那里收集一个数字。所有其他数字将由程序生成。
如果用户输入大于 20 的数字,用户应该会收到错误消息。
如果用户输入一个等于或小于 20 的数字,则显示从 1 到所选数字的每个值的双精度数(每个数字乘以 2),然后提供所有双精度数的总和。
例如,如果用户输入数字 5,则应显示以下内容:
Double up 1 = 2
Double up 2 = 4
Double up 3 = 6
Double up 4 = 8
Double up 5 = 10
Total = 30
最低要求: • 创建一个包含以下方法的单独类。注意:这个类应该与包含 main 方法的公共类分开。 1. 一种将接受两个参数的方法:一个整数数组和一个整数变量。 1. 整数变量应保存用户提供的值。该数组将用于保存加倍结果。 2. 该方法应该执行计算,并将加倍结果存储在数组中。此外,应使用也是私有实例变量的累加器变量来计算所有加倍值的总和。 3.您必须确保调用方法获得对数组的更改。请记住,默认情况下,数组是通过引用传递的。此方法必须使用循环。
- 一个单独的方法将返回(不显示)存储在名为 total 的私有实例变量中的值。
• 创建一个 main 方法,该方法创建一个数组和整数变量,以及您的类的一个实例。然后主方法应该使用实例调用类的每个方法,传递所需的数据并处理任何返回数据。显示数组和总变量的全部内容。 */
import java.util.Scanner;
public class project2 {
public static void main(String args[]){
scores output = new scores();
output.enterNum();
output.displayScores();
}
}
class scores
{
int total;
int stats[] = new int[20];
int num1;
void enterNum()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter a number between 1 and 20: ");
num1 = input.nextInt();
if(num1<=0 || num1>20)
{
System.out.println("You entered a wrong number. Try again.");
System.out.println("");
enterNum();
}
}
void displayScores()
{
int b=0;
int val2=0;
int total = 0;
val2=num1*2;
for(int i=1;b<val2;i++)
{
System.out.println(b=i*2);
total = total + b;
// this part.
// stats[i] = b;
// System.out.println(stats);
}
System.out.println(total);
}
}
【问题讨论】:
-
究竟是什么问题?
-
你的代码很混乱。问题似乎出在 displayScores 方法中。 for循环的参数没有意义。变量 b 和 vak2 应该代表什么?
-
很抱歉,如果它令人困惑。 val2=num1*2;由于它应该加倍,我分配了 num1(用户输入的内容)* 2(加倍),并将其分配给 val2。我现在看到我本可以做到这一点 num1=num1*2; ?所以无论如何,如果你运行它要求一个数字的程序,假设你输入 5 * 2 = 10。它从 2、4、6、8、10 开始并停止。 b...我想我不需要它? i=i*2 会做同样的事情吗?
-
从我的阅读方式来看,您的主要方法应该是从用户那里获取号码以及进行所有打印。另一个类应该只在操作完成后返回数据,但是所有的打印都是由另一个类完成的。另请注意,您不需要大小为 20 的数组,而是使其与用户输入的数字大小相同(如果它在可接受的范围内)
-
@BahramdunAdil 清楚您的编辑 cmets。
标签: java arrays loops for-loop