Java学习笔记-循环
2017-10-21 21:50
274 查看
注:本系列是跟着中国Mooc上浙江大学翁恺老师的零基础学java视频学习的
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
输入格式:
一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。
输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。
输入样例:
9 3 4 2 5 7 -1
输出样例:
4 2
程序编写
对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。
这里的计算可以用下面的表格来表示:
按照二进制位值将1的位的位值加起来就得到了结果13。
你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。
提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。
输入格式:
一个非负整数,整数的范围是[0,1000000]。
输出格式:
一个整数,表示计算结果。
输入样例:
342315
输出样例:
13
程序思路:
程序编写:
注:在Mooc提交的时候要将文件名改为Main()
注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
程序编写:
你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi
输入格式:
一个整数,范围是[-100000,100000]。
输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:
-30
输出样例:
fu san ling
程序编写:
第三周作业1:奇偶个数
题目内容:你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
输入格式:
一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。
输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。
输入样例:
9 3 4 2 5 7 -1
输出样例:
4 2
程序编写
import java.util.Scanner; public class ji_ou_number { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int number; int count1 = 0; int count2 = 0; number = in.nextInt(); while(number != -1) { if(number%2 != 0) { count1 = count1 + 1; } else if(number%2 == 0) { count2 = count2 + 1; } number = in.nextInt(); } System.out.println(count1+" "+count2); } }
第三周作业2:数字特征值
题目内容:对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是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 numberfeature { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int digit; int count = 1; int sum = 0; int result; int number = in.nextInt(); digit = number%10; while(digit != 0) { if ((digit%2) == (count)%2) { result = 1; sum = (int) (sum + result*Math.pow(2, (count -1))); digit = number/10; count = count +1; } else if ((digit%2) != (count)%2) { result = 0; sum = (int) (sum + result*Math.pow(2, (count -1))); digit = number/10; count = count +1; } number = digit; digit = number%10; } System.out.println(sum); } }
注:在Mooc提交的时候要将文件名改为Main()
想说:
本次最大的心得是第一次不由自主的先画思路再写程序!然后就理清思路并正确编写了!第四周作业1:素数和
题目内容:我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。现在,给定两个整数n和m,0<n=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
程序编写:
import java.util.Scanner; public class SumOfPrime { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int sum = 0; int cost = 0; //i是每个数,cost是素数的序号 for(int i=2;cost < m;i++) { boolean flag = true; //judge prime for(int j = 2;j<=Math.sqrt(i);j++) { if(i%j==0) { //not prime flag = false; break; } } if (flag){ cost++; if(cost >= n){ sum = sum + i; } } } System.out.println(sum); } }
第四周作业2:念整数
题目内容:你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi
输入格式:
一个整数,范围是[-100000,100000]。
输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:
-30
输出样例:
fu san ling
程序编写:
import java.util.Scanner; public class nian_shuzi { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int cost = 0; int a; int b; String[] pinyin = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; int number =in.nextInt(); if(number < 0) { System.out.print("fu "); number = - number; } a = number; // 判断是几位数,然后从头开始取数 while(a!=0) { a = a/10; cost= cost +1; } //从头开始挨个取数 for(int i = cost;i > 1 ; i --) { //取出每一位 b = number/(int)(Math.pow(10, (i-1))); //取出前一位后剩下的位数数字 number = number -b *(int)(Math.pow(10, (i-1))); System.out.print(pinyin[b]+" "); } //最后只剩一位 System.out.print(pinyin[number]); } }
想说:
今天的最大感受是体会到了debug的快感!太好用了以前自己学c语言的时候总是一遍遍在程序里加printf看中间的变量,现在直接在debug里就全都知道了!还能看到每一步的变化,哪怕写程序的时候思路没有那么清楚,欠缺在哪一调试也全都指导啦!相关文章推荐
- java学习笔记03--判断与循环语句
- [Java学习笔记] 猜猜看(2) ~ 中断循环语句的一种方法(能够中断所有进行中的循环)
- 黑马程序员 Java基础学习笔记3 循环和数组
- 黑马程序员-java学习笔记-循环语句
- Java基础视频教程第03天_学习笔记之循环结构、函数
- java学习笔记03--判断与循环语句
- java学习笔记---循环与选择语句
- Java基础学习笔记2-循环
- Java学习笔记03--判断与循环语句
- Java学习笔记_4_增强的for循环
- Java学习笔记(四)循环控制
- Java基础学习笔记 -- 8(循环语句)
- Java学习笔记(三)循环
- java个人学习笔记19(多生产者多消费者+循环判断标记+notifyAll()+Lock+Condition)
- 【Java学习笔记】基础知识学习3【基本循环方法技巧】
- 黑马程序员_java基础学习笔记02_选择结构和循环语句语句
- Java学习笔记——forEach循环
- JAVA学习笔记(四) - 循环语句
- java学习笔记03--判断与循环语句
- NO3.java学习笔记(顺序结构、判断结构、选择结构、循环结构、函数)