博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Scala练习java经典习题之循环+数组
阅读量:4160 次
发布时间:2019-05-26

本文共 6050 字,大约阅读时间需要 20 分钟。

文章目录

1.百钱买百鸡

package com.sunyongobject Baiqianji {
def main(args: Array[String]): Unit = {
var count=0 for(i<-0 to 20){
for (j <-0 to 33){
for (k <- 0 to 100){
if(i+k+j==100 && i*15+j*9+k==300){
count+=1 println("公鸡:" + i + "只," + "母鸡:" + j + "只," + "小鸡:" + k + "只") } } } } println("总共有" + count + "中购买方式!") }}

2.鸡兔同笼。

package com.sunyong//鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?要求鸡兔至少一样一只object JiTu {
def main(args: Array[String]): Unit = {
//鸡两只脚 兔子四只脚 一起50只 160只脚 var count=0 for (i<-0 to 50){
for (j<-0 to 50){
if(i+j==50 && i*2+j*4==160){
count+=1 println("鸡:" + i + "只," + "兔子:" + j + "只") } } } println("总共有" + count + "种方式!") }}

3.公鸡2文母鸡1文小鸡半文每种至少一只100文买100只鸡有多少种可能

package com.sunyong//公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少种可能object Ji {
def main(args: Array[String]): Unit = {
var count = 0 for (i<-1 to 50){
for(j<-1 to 100){
for(k<- 1 to 200){
if (i+k+j==100 && i*4+j*2+k==200) {
//注意不能直接k/3 /符号是取商 count += 1 println("公鸡:" + i + "只," + "母鸡:" + j + "只," + "小鸡:" + k + "只") } } } } println ("总共有" + count + "中购买方式!") }}

4.请输入一个正整数年份,判断是否是闰年?

package com.sunyongimport java.util.Calendarimport scala.io.StdInobject runnian {
def main(args: Array[String]): Unit = {
val calendar = Calendar.getInstance() println("请输入一个正整数:") var year = StdIn.readInt() //判断2月份有多少天 //设置时间为2月27号 月份0-11 calendar.set(year,1,27) //加2天为 可能 2月份29 3月 1 calendar.add(Calendar.DAY_OF_MONTH,2) if(calendar.get(Calendar.DAY_OF_MONTH)==29){
println(year+"年是闰年") }else{
println(year+"年不是闰年") } }}

5.随机生成一个int型一维数组,从控制台输入一个数值,遍历数组查找,如果找到了,打印出该数在数组中的位置,如果没有查到,请将该数值插入并形成新的数组(要求降序)

package com.sunyongimport scala.io.StdIn/** 随机生成一个int型一维数组,从控制台输入一个数值,遍历数组查找,* 如果找到了,打印出该数在数组中的位置,* 如果没有查到,请将该数值插入并形成新的数组(要求降序)* */object shuzu {
def main(args: Array[String]): Unit = {
var arr = new Array[Int]((math.random*10+1).toInt) for (i <- 0 until arr.length) {
arr(i)= (math.random*20).toInt } println(arr.mkString(",")) println("输入一个整数:") val a = StdIn.readInt() val index = arr.indexOf(a) if(index>=0){
println(index) }else{
var b = new Array[Int](arr.length+1) arr.copyToArray(b) b(b.length-1)=a println(b.sorted.reverse.mkString(",")) } }}

6.数学黑洞6174

package com.sunyongimport scala.io.StdIn/* * 已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减, * 重复这个过程,最多七步,必得6174。  -->将减后的值继续重新拆分 * 即:7641-1467=6174。将永远出不来。 * 求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。 */object MathBlackHole {
def main(args: Array[String]): Unit = {
var flag = true while (flag){
var maxNum=0 var minNum=0 var count=0 print("请输入一个四位正整数:") var num = StdIn.readInt() println(num) while(num / 1000 == num % 10 && num / 1000 == num % 1000 / 100 && num / 1000 == num % 100 / 10){
print("数字不可全部一样,请输入一个四位正整数:") num = StdIn.readInt() } do {
var nums =new Array[Int](4) nums(0)=num/1000 nums(1)=num%10 nums(2)=num%1000/100 nums(3)=num%100/10 nums=nums.sorted maxNum=nums(3)*1000+nums(2)*100+nums(1)*10+nums(0) println("第" + (count + 1) + "次重新组合最大的值:" + maxNum) minNum=nums(0)*1000+nums(1)*100+nums(2)*10+nums(3) println("第" + (count + 1) + "次重新组合最小的值:" + minNum) num=maxNum-minNum println("差值:"+num) count+=1 }while(num!=6174) println("总共输入了:" + count + "次") if(count>7){
println("超过了7次") flag=false } } println("程序退出") }}

7.有一组数,其排列形式如下:11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8,且尾部8和头部11首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置下标。

package com.sunyong/** 有一组数,其排列形式如下:* 11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8,* 且尾部8和头部11首尾相连,构成环形的一组数,* 编程找出(连续)相邻的4个数,其相加之和最大,并给出它们的起始位置下标。* */object huanxing {
def main(args: Array[String]): Unit = {
var arr = Array[Int](11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8) var max1=0 var index1 = 0 for (i <- 0 until arr.length-5){
var a = arr(i)+arr(i+1)+arr(i+2)+arr(3) if(max1< a){
max1=a index1=i } } //留下左边三个数 var b = arr.dropRight(arr.length-3) //留下右边三个数 var c = arr.drop(arr.length-3) //重新组合成新数组 var d = c++:b //右边三个 + 左边三个// println(d.mkString(",")) var index2=0 var max2=0 for (i <- 0 until d.length-5){
var a = d(i)+d(i+1)+d(i+2)+d(3) if(max2< a){
max2=a index2 = i } } //判断是原本数组的下标还是组成环形之后的和更大 if (max1>=max2){
println("起始下标:"+index1+",最大值:"+max1) }else{
println("起始下标"+(index2+arr.length-3)+",最大值:"+max2) } }}

8.输入一个十进制数,将其转换成二进制数

package com.sunyongimport scala.io.StdIn//输入一个十进制数,将其转换成二进制数//除2取余,逆序排列object erjinzhi {
def main(args: Array[String]): Unit = {
println("请输入一个正整数:") val num = StdIn.readInt() var shang = num var r = 0 var res = ""//保存余数 while (shang!=0){
r=shang % 2 res = r+res //取余逆排列 shang /=2 } println(num+"转换二进制为:"+res) }}

9.利用for循环生成由A-Z26个大写字母与a-z26个小写字母组成的数组

package com.sunyong//利用for循环生成由ABCDEFG...XYZ,26个大写字母与26个小写字母组成的数组object str {
def main(args: Array[String]): Unit = {
var a1 = 'A' var arr1 = new Array[Char](26) for (i <- 0 to 25){
arr1(i)=(a1.toByte.toInt+i).toChar } var a2 = 'a' var arr2 = new Array[Char](26) for (i <- 0 to 25){
arr2(i)=(a2.toByte.toInt+i).toChar } var arr3 = arr1++:arr2 println(arr3.mkString(",")) }}

10.控制台输入一行字符串,简单实现一个wordcount词频统计

package com.sunyongimport scala.io.StdInobject worlCount {
def main(args: Array[String]): Unit = {
println("请输入一个句子:") val str = StdIn.readLine() println(str.split(" ").map((_,1)).groupBy(_._1).map(x =>(x._1,x._2.length))) }}

在这里插入图片描述

转载地址:http://mcjxi.baihongyu.com/

你可能感兴趣的文章
BOOST_TYPEOF和BOOST_AUTO 作用
查看>>
随机森林概述
查看>>
2011十大战略技术
查看>>
大学应该学的软件知识
查看>>
腾讯与360战争背后的云计算阴影
查看>>
腾讯看了会沉默,360看了会流泪
查看>>
李开复:移动互联网机会最大 微博会现最大赢家
查看>>
2006年的IT十大战略技术
查看>>
操作系统介绍
查看>>
Desktop Linux: The Dream Is Dead
查看>>
我的9年IT路
查看>>
任正非:让用户像用电一样享受云计算
查看>>
学习技术的几个境界
查看>>
计算机世界:免费的代价
查看>>
方兴东:中国网站十年
查看>>
2010年微软和谷歌十大战场:从桌面到浏览器
查看>>
服务器虚拟化的未来之路
查看>>
写给我们这些浮躁的系统工程师
查看>>
和平分手?你根本不知道吴恩达在百度经历了什么
查看>>
业余研究:关于腾讯与他的QQ帝国
查看>>