黑马程序员技术交流社区
标题:
新人求助,关于1-100之间7的倍数的个数这个问题。
[打印本页]
作者:
王青山
时间:
2011-12-8 12:41
标题:
新人求助,关于1-100之间7的倍数的个数这个问题。
本帖最后由 王青山 于 2011-12-9 12:42 编辑
/*
题目:1-100之间7的倍数的个数。并打印。
我的思路:把7的倍数定义为变量X,让7与它的倍数相乘小于100。然后输出X的个数。
问题:正确的结果应该是14.但我输出的结果是15.有点不理解。
我想问问我这个方法可行么?有什么能改进的地方?
*/
//代码如下
class for_test
{
public static void main(String[]args)
{
int x=1;
while(x*7<100)
{
x++;
}
System.out.println("x="+x);
}
}
作者:
周胜
时间:
2011-12-8 12:51
本帖最后由 周胜 于 2011-12-8 15:43 编辑
兄弟,类名要大写,你写的程序可以但是在x=14时候14*7=98<100在循环体里面x自加1为15了,在输出语句前面加个x--就行了。下面是我写的另一种。
class ForTest
{
public static void main(String[] args)
{
int j = 0;
for (int i=1; i<=100; i++) {
if(i%7 == 0) { //求余 余数为0说明能整除
j++; //计数
System.out.println(i); //打印输出验证
}
}
System.out.println(j); //打印J
}
}
作者:
fly51888
时间:
2011-12-8 13:00
你写的程序思路有点不对,当x=14时,14*7<100,所以还是会执行while(){}内的语句块,x++,此时x的值为15。
下面是按我自己的思路写的一个程序你看下:
class App {
public static void main(String[] args) {
int x = 0;
for(int i=1;i<=100;i++){
if(0==i%7){ //如果i的模7为0则表示i可以被7整除,即是7的倍数。
x++; //然后x++,否则不予处理。
}
}
System.out.println("x=" + x);
}
}
输出结果为:14.
作者:
程传鹏
时间:
2011-12-8 13:26
你写程序的思路是完全正确定的,但是,之所以会出错,是因为你没有处理好临界问题
这是你的代码
while(x*7<100)
{
x++;
}
当程序执行到14时,14*7=98<100,所以,会继续执行while循环,当x=15时,while循环才结束,所以,你得到的结果会比原值大1,所以,你在System.out.println()前在加上x--就可以了
作者:
杨强
时间:
2011-12-8 13:50
class Demo
{
public static void main(String[] args)
{
for (int i =1;i<=100 ;i++ )
{
if (i%7==0)
{
System.out.println(i);
}
}
}
}
作者:
杨强
时间:
2011-12-8 13:52
class Demo
{
public static void main(String[] args)
{
int x=0;
for (int i =1;i<=100 ;i++ )
{
if (i%7==0)
{
x++;
}
}
System.out.println(x);
}
}
刚才看错了 以为要输出1-100中7的倍数
作者:
小春同学
时间:
2011-12-8 14:19
对,看来以后处理问题要多多考虑临界问题啊!我决得楼主的算法不错的,计算次数少很多,效率高些,只需输出时用 - - x 就可以了。
{:soso_e183:}受教了,临界,临界,以后多多注意!
作者:
李建锋
时间:
2011-12-8 14:30
本帖最后由 李建锋 于 2011-12-8 14:53 编辑
/*
* 兄弟你的思路有一点小问题,就是在必须在打印之前,必须自减一次,因为最后一次循环在自加之后已经超出了范围!下面的算法效率应该高一点
/*吧!
*
*/
public class ForTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=1;//用来表示7的倍数
int j=0;//用来计数
while(x*7<100)
{
x++;
}
x--
System.out.println(x);
}
}
作者:
王青山
时间:
2011-12-8 22:36
谢谢各位的帮助。我会注意类名大写的。另外我想想问问七楼:“int j=0;”怎么实现计数,我有点菜,见谅
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2