重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public class Num {
创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了做网站、成都做网站服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
public static void main(String[] args) {
int x = 666;
int y = get(x);
System.out.println(x+"是"+y+"位数");
}
private static int get(int x) {
int count = 1;
while(x/10!=0){
x = x/10;
count++;
}
return count;
}
}
输出
666是3位数
for (int i = 1; i = 100; i++) {
if (i % 10 != 4) {
System.out.println(i);
}
}
参考代码如下:
import java.util.ArrayList;
import java.util.List;
public class Xxxxx {
public static void main(String[] args) {
//用于存放包含7,或是能被7整除的所有数字的集合
ListInteger seven=new ArrayListInteger();
for (int i = 1; i = 100; i++) {
//将数字i转化为字符串
String istr=i+"";
if(i%7==0){
//被7整除(余数为0)
seven.add(i);
}else if(istr.contains("7")){
//包含7
seven.add(i);
}
}
System.out.println("包含7,或是能被7整除的所有数字为:"+seven);
}
}
运行结果如下图:
这是一个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((k1)+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();
}
}
}
}