题目是:尝试开发一个程序,获取2-32之间(不包括32)的6个偶数,并取得这6个偶数的和我编了如下的程序,结果运行以后发现不对劲,应该是有6个偶数的也不是,最后得到的数也不是6个数之和,不知是哪里出错了,请哪位大侠帮帮忙,看我哪里理解错了,谢谢
//import java.math.*;
public class UseCase1 {public static int GetEvenNum(double num1,double num2){
int sum=0;
for(int i = 0;i<6;i++)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
sum=sum+s;
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
}}
//import java.math.*;
public class UseCase1 {public static int GetEvenNum(double num1,double num2){
int sum=0;
for(int i = 0;i<6;i++)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
sum=sum+s;
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
}}
解决方案 »
- 关于eclipse同时开发PHP和Java的问题
- 关于bytebuffer,请高手指教,急!谢谢!
- 关于 ResourceBundle 类的用法..
- 请高手解决一下这个程序的问题,谢谢
- 利用POI的hssf,怎么把excel文件中的列删除?
- Fatal Error: Unable to locate package java.lang in classpath or bootclasspath at line 0 (0:0)
- 请教一个RMI中对象参数传递的问题
- 在jbuilder中的一个包内多个FRAME如何相互访问?
- 请教FileOutputStream类问题!
- applet程序不能正常运行!
- 请教一个关于线程同步的问题
- 急询一个读取网页问题,十万火急
这里你得到了一个随机数,但是这个随机数可能是个奇数,所以下面一句
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
判断是不是偶数时就跳过了,所以结果当然不可能得到6个偶数啦~
public class UseCase1 { public static int GetEvenNum(double num1,double num2){
int sum=0;
for(int i = 0;i <6;i++)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
else
{
i=i-1;
continue;
}
sum=sum+s;
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
} }
((int)num1+(int)(Math.random()*(num2-num1))/2 得到 [num1/2,num2/2)之间的随机数,然后(((int)num1+(int)(Math.random()*(num2-num1))/2)*2 的得到是[num1,num2)之间的偶数随机数
public class UseCase1 { public static int GetEvenNum(double num1,double num2){
int sum=0;
for(int i = 0;i <6;i++) //在这里面你循环六次,希望得到六个偶数。但是下面获取随机数的时候,如果不是偶数也会算作一个循环,所以你不能得到六个偶数,除非你每次生成的随机数都是偶数。
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
sum=sum+s; //这里面你想把偶数进行相加,但是你没有把他放到if(s%2==0)的判断语句里面,所以会把全部随机数相加,而不是只有整数。
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
} }
public class UseCase1 { public static int GetEvenNum(double num1,double num2){
int sum=0;
for(int i = 0;i <6;i++) //在这里面你循环六次,希望得到六个偶数。但是下面获取随机数的时候,如果不是偶数也会算作一个循环,所以你不能得到六个偶数,除非你每次生成的随机数都是偶数。
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
sum=sum+s; //这里面你想把偶数进行相加,但是你没有把他放到if(s%2==0)的判断语句里面,所以会把全部随机数相加,而不是只有整数。
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
} }
int sum=0;
for(int i = 0;i <6;i++)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
System.out.println("本次所得偶数为:"+s);
}
sum=sum+s;
}
return sum;
}
/////
我觉得FOR循环有问题,循环6次,拿不到6个偶数
应该用do-whileint s=0;
for(int i = 0;i <6;i++)
{
do
int s=(int)num1+(int)(Math.random()*(num2-num1));
while(s%2!=0);
System.out.println("本次所得偶数为:"+s);
sum=sum+s;
}
按楼主的给的问题,没考虑偶数重复,我的代码:
public class GetSixEven {
public static void main(String[] args) {
int x;
int count=0;
int sum=0;
while(true){
x = (int)(Math.random()*32);
if(x%2==0 && x>=2){
System.out.println(x); //输出偶数
sum += x;
count++;
if(count==6)break;
}
}
System.out.println(sum); //给出偶数之和
}
}
int sum=0;
int count=0;
do
{ int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
count++;
System.out.println("本次所得偶数为:"+s);
sum=sum+s;
}
} while(count<6);
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
System.out.println("任意6个2~32之间的偶数之和为:"+GetEvenNum(2,32));
} }
int count=0;
while(count<6)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
count++;
System.out.println("本次所得偶数为:"+s);
sum=sum+s;
}
}[/code]