用java代码将1到1000的奇数打出来

 我来答
雪飞潇潇
推荐于2017-09-15 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:843万
展开全部

这是一个java基础题

    虽然基础,但是我们练习的时候,可以加以拓展和优化,熟悉for循环 while循环, 了解运算符优先级,   加强对业务逻辑的分析处理,强化写代码的能力。


首先代码的写法是多样的

1.根据奇数定义 :   不能被2所整除的数是奇数

根据这个定义,我们可以写一个最基础的版本

public class Odd1 {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {//1~1000之间 循环1000次
if(i%2!=0){  //不能被2整除的
System.out.println(i);//就是奇数,打印出来
}
}
}
}

分析下,这个版本,我们发现这个版本性能可能比较低

        因为要循环1000次,并且每次还要进行一次求余运算。所以性能低。

        有没有改进的空间?


2.   我们继续对奇数进行了解(对业务进行熟悉)。还有改进的空间

然后发现: 偶数可用2k表示,奇数可用2k+1表示,这里k是整数。

代码修改如下

public class Odd2 {
public static void main(String[] args) {
for (int k = 0; k < 500; k++) {//循环减少为500次
System.out.println(k*2+1);//按照奇数公式进行输出
}
}
}


3.  继续优化.   java中乘法是性能消耗比较大的运算,  如果可以使用移位操作 ,  那么使用移位操作代替乘法

因为使用移位的操作将会更快和更有效

public class Odd3 {
public static void main(String[] args) {
for (int k = 0; k < 500; k++) {
System.out.println((k<<1)+1);//移位操的优先级低于四则运算, 所以用括号括起来优先计算 , 左移1位.相当于*2
}
}
}


4.  查看奇数的特性  , 来探索其他写法

    奇数1、3、5、7、9、11、13、15、17、19、21、23、25、27、29、31、33.........

    每个奇数的间隔是2, 第一个奇数是1

    代码如下

public class Odd4 {
public static void main(String[] args) {
for (int i = 1; i < 1000; i+=2) {//从1开始,每次自加2
System.out.println(i);
}
}
}


5. 除开for循环,  while循环也可以写.  

public class Odd5 {
public static void main(String[] args) {
int i = 1;
while (true) {
if (i >= 1000) {
break;//跳出循环
}
System.out.println(i);
i = i + 2;
}
}
}

6  再次修改,如果业务逻辑 从1~1000修改成其他数字了, 那么在循环体中修改不是特别合适

所以需要定义成2个变量. 来记录开始的数字和结束的数字.  并且如果输出太多的数字, 不方便查看,  那么需要美化下输出的格式

public class Odd6 {
public static void main(String[] args) {
int start = 1; //开始的数
int end = 1000; //结束的数
int index =0;//用于换行处理的计算
for (int n = start; n < end; n += 2) {
index++;
System.out.print(n+"\t");//  \t表示制表符  ,这样数字看起来排列比较整齐
if(index%10==0){//每10个数字,换一行
System.out.println();
}
}
}
}

usernamepassword
2015-12-14 · TA获得超过106个赞
知道答主
回答量:52
采纳率:0%
帮助的人:28.1万
展开全部
public class Printer
{
public static void main(String[] args)
{
for(int n=1;n<=1000;n++){
if(n%2!=0)
{
System.out.println(n);

}

}

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liquan726
2015-03-25
知道答主
回答量:11
采纳率:0%
帮助的人:9万
展开全部
您好,代码实现如下:

package com.baidu;

public class Test {

public static void main(String[] args) {

for(int i=1;i<1000;i++){
System.out.println(i);
i++;

}
}
}
不懂了再问我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式