零基础Java语言_3_循环

编者按:其实编者没什么好按的,但是为了装逼,还是写一下编者按吧。附上翁恺老师慕课链接:https://www.icourse163.org/learn/ZJU-1001541001?tid=1450243457#/learn/announce
下面是引用翁恺老师的话:

循环是计算思维的典型体现
最近两周是关于循环的,在所有的教科书中,这些内容是一章的。但是我们实际上课的时候,往往会用两周甚至三周的时间来慢慢讲。我们本来已经准备好了120分钟的视频,打算就这样一次性交给大家。但是,就算我们可以急赤白脸地讲完了,你们未必能吭哧吭哧地学完。所以,我们还是分开两周,一点点发布给你。

其实就循环的语法而言,根本用不了两周。之所以要讲得慢,是因为循环体现的是计算机的思维方式,对于我们人类,循环是不自然的,谁没事儿会给自己编个循环像机器人一样生活呢。所以循环这两周,重点不是学习怎么写循环代码,重点是体会如何把我们对问题的理解,转化成用循环的手段来解决。我们准备的每一个视频,都是一个问题的例子,帮助你建立用循环解决问题的概念,顺便学习Java语言有些怎样的工具来解决问题。

if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。

重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。

我们既要学习解决问题的方法,也要掌握解决问题的手段和工具。人和动物的区别就在于制造和使用工具,编程语言的语句和结构就是我们解决问题的工具。方法很重要,可是没有了工具依然无法解决问题。所以尽管语言本身有很多细枝末节的规定,该知道的还是得知道。要不然,空有做大事的思想,没有做大事的能力,还不是一事无成么。

2020年03月02日 08:33
——翁恺老师

1奇偶个数(5分)
题目内容:

你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

输入格式:

一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。

输出格式:

两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。

输入样例:

9 3 4 2 5 7 -1

输出样例:

4 2

import java.util.Scanner;

public class Main {

	private static Scanner in;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		in = new Scanner(System.in);
		int a;
		int ou = 0;//偶数个数(小白的起变量名的水平也就到这里了(狗头
		int ji = 0;//奇数个数
		a = in.nextInt();//输入第一个数
		while (a != -1)//以-1为结束标志
		{
			a = a%2;//判断为偶数
			if (a == 0)
			{
				ou = ou+1;
			}
			else//判断为奇数
			{
				ji = ji+1;
			}
			a = in.nextInt();//输入第二个数
		}
		System.out.println(ji+" "+ou);
	}

}

2数字特征值(5分)
题目内容:

对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。

这里的计算可以用下面的表格来表示:

在这里插入图片描述
按照二进制位值将1的位的位值加起来就得到了结果13。

你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。

提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。

输入格式:

一个非负整数,整数的范围是[0,1000000]。

输出格式:

一个整数,表示计算结果。

输入样例:

342315

输出样例:

13

import java.util.Scanner;

public class Main {

	private static Scanner in;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		in = new Scanner(System.in);
		int a;
		int b;
		int c = 0;
		int count = 0;
		a = in.nextInt();//输入
		while(a > 0)
		{
			count = count+1;
			b = a%10;//取a的个位数
			if ((count%2==0)&&(b%2==0) || (count%2==1)&&(b%2==1))
			{
				c = (int) (c+Math.pow(2,count-1));
			}
			a = a/10;//将a的个位数舍弃
		}
		System.out.println(c);
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值