当前位置: 首页 > news >正文

java基础练习--基础语法

预备知识:Java基本语法、分支、循环、数组和字符串

7-1 累加器

请你实现一个累加器。输入n个非负整数,输出他们的和。 1<n<1000,而每个数则<10000。

输入格式:

输入包括两行。 第一行:包括一个整数n,表示总共有n个数。 第二行:包含n个整数。

输出格式:

输出n个数的和。

输入样例:

4
3 2 1 4

输出样例:

10

 

import java.util.Random;
import java.util.Scanner;public class Main{public static void main(String [] args){Scanner cin  = new Scanner(System.in);int nums = cin.nextInt();int res = 0;for(int i=0;i<nums;i++){int tmp = cin.nextInt();res += tmp;}System.out.println(res);}
}

7-2 我是升旗手

一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因
为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学
一样高,则选任意一位)。你能很快地给老师答案么?

输入格式:

输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。

输出格式:

输出身高最高的同学的身高。

输入样例:

4
130 125 129 140

输出样例:

140
import java.util.Random;
import java.util.Scanner;public class Main{public static void main(String [] args){Scanner cin  = new Scanner(System.in);int nums = cin.nextInt();int res = -1;for(int i=0;i<nums;i++){int tmp = cin.nextInt();res = Math.max(res,tmp);}System.out.println(res);}
}

 

7-3 兔子繁殖问题

已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对.....假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?

输入格式:

输入一个数n,表示第n个月,1<=n<=24。

输出格式:

输出这个月兔子的数目。

输入样例:

4

输出样例:

5
import java.util.Random;
import java.util.Scanner;//1 2 3 5 
public class Main{public static void main(String [] args){Scanner cin  = new Scanner(System.in);int nums = cin.nextInt();int tmp = 1;int res = 1;for(int i=1;i<nums;i++){int tt = res;res += tmp;tmp = tt;}System.out.println(res);}
}

 

7-4 作品评分

全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。

输入格式:

输入数据包括两行: 第一行为n,表示n个评委,n>2。
第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。

输出格式:

输出平均分,结果保留两位小数。

输入样例:

6
10 9 8 7.9 9 9.5

输出样例:

8.88

 

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;//1 2 3 5 
public class Main{public static void main(String [] args) throws IOException{PrintWriter out = new PrintWriter(System.out);StreamTokenizer in =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));Scanner cin  = new Scanner(System.in);in.nextToken();int nums = (int)in.nval;in.nextToken();double sum = in.nval;double mx = sum;double mn = sum; for(int i=1;i<nums;i++){in.nextToken();double tmp = in.nval;if(tmp > mx){mx = tmp;}if(tmp < mn){mn = tmp;}sum += tmp;}sum -= mn;sum -= mx;double res = sum / (nums-2);out.println(String.format("%.2f",res));out.flush();	}
}

 

7-5 验证回文串

编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的。例如,mom,dad是回文串。该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出。

输入格式:

输入在一行中给出一个字符串。

输出格式:

如果输入的字符串为回文串,则输出yes;否则输出no。

输入样例:

在这里给出一组输入。例如:

mom

输出样例:

在这里给出相应的输出。例如:

yes

 

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;//1 2 3 5 
public class Main{static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static boolean judge(String s){int len = s.length();for(int i = 0; i < len/2; i++){if(s.charAt(i) != s.charAt(len-i-1)){return false; }}return true;}public static void main(String [] args) throws IOException{in.nextToken();String s = in.sval;if(judge(s)){out.println("yes");}else{out.println("no");}out.flush();}
}

 

7-6 jmu-Java-01入门-格式化输入输出与字符串

###本题主要考察

  • 使用Scanner处理输入
  • 使用System.out.printf进行格式化输出
  • String常用方法与字符串常用操作

main

###输入说明:

  • 输入double,然后输入3个浮点数。输出:从左到右依次输出3个double(均保留2位小数输出,宽度为5),格式依次为:右侧填充空格,左侧填充空格,直接输出
  • 输入int,然后输入3个整数(以1个或多个空格分隔)。输出:将3个整数相加后输出。
  • 输入str,然后输入3个字符串。输出:去除空格,然后倒序输出3个字符。
  • 输入line,然后输入一行字符串。输出:转换成大写后输出。
  • 如果输入不是上面几个关键词,输出:输出other

###输出说明
choice=你输入选项
该选项对应的输出内容

###提示

  1. 可使用line.split("\\s+");将以1个或多个空格分隔开的字符串分割并放入字符串数组。
  2. Scanner.nextLine与Scanner的其他next函数混用有可能出错。

输入样例:

double
1.578 3.0 3.14259
line
aaaaaaaaaa
int
1      2    3
str
321 654 987
line
dddddddddd
end

输出样例:

choice=double
1.58 , 3.00,3.14
choice=line
AAAAAAAAAA
choice=int
6
choice=str
987654321
choice=line
DDDDDDDDDD
choice=end
other

 这里要用到scanner.nextLine(),值得学习和注意

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static void solve() throws IOException{Scanner cin = new Scanner(System.in);while(true){in.nextToken();String op = in.sval;if(op.equals("double")){out.println("choice=double");in.nextToken();double n1=in.nval;out.printf("%-5.2f",n1);out.print(",");in.nextToken();double n2 = in.nval;out.printf("%5.2f",n2);out.printf(",");in.nextToken();double n3 = in.nval;out.printf("%.2f",n3);out.println();}else if(op.equals("int")){out.println("choice=int");in.nextToken();int a = (int)in.nval;in.nextToken();int b = (int)in.nval;in.nextToken();int c = (int)in.nval;out.println(a+b+c);}else if(op.equals("str")){out.println("choice=str");in.ordinaryChars('0','9');in.wordChars('0','9');in.nextToken();String  a = in.sval;in.nextToken();String b = in.sval;in.nextToken();String c = in.sval;String res = c + b + a;in.parseNumbers();out.println(res);}else if(op.equals("line")){out.println("choice=line");String s = cin.nextLine();s = s.toUpperCase();out.println(s);}else{out.printf("choice=%s%n",op);out.println("other");}out.flush();}}public static void main(String [] args) throws IOException{solve();}
}

 

7-7 结伴同行去秋游

可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴......依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!

输入格式:

第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。
第二行n个整数表明n个同学的学号,学号之间有一个空格。

输出格式:

共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。

输入样例:

6
5 6 4 12 3 2

输出样例:

5 2
6 3
4 12
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static void solve() throws IOException{int n;n = cin.nextInt();int[] a = new int[9999];for(int i = 0 ; i < n ; i++ ){a[i] = cin.nextInt();} for(int i=0;i<n/2;i++){out.printf("%d %d%n",a[i],a[n-i-1]);}}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

7-8 摘苹果

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出很多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知每个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式:

包括三行数据。
第一行是一个整数n,表示有n个苹果。苹果至少有一个,不超过1000个。
第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示这n个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第三行是一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式:

一个整数,表示陶陶能够摘到的苹果的数目。

输入样例:

10
100 200 150 140 129 134 167 198 200 111
110

输出样例:

5
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static void solve() throws IOException{int n;n = cin.nextInt();int[] a = new int[9999];for(int i = 0 ; i < n ; i++ ){a[i] = cin.nextInt();} int h = cin.nextInt();int res = 0;for(int i=0;i<n;i++){if(a[i]<=h+30){res++;}}out.println(res);}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

7-9 数组元素的删除

完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。
重复若干次这样的删除,得到最后的结果。

输入格式:

第一行包括一个整数n(1<=n<=100),表示数组元素的个数。
第二行输入n个数组元素,均为整数,用空格隔开。
第三行输入一个数k(1<=k<=100),表示要进行k次删除。
接下来k行,每行一个数x,表示要删除第x个元素。

输出格式:

输出经过k次删除后的数组,每两个元素之间用空格隔开。

输入样例:

10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6

输出样例:

1 4 5 7 8 10

 

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static int[] a = new int[9999];static int len;static void fun(int id){id--;for(int i=id;i<len-1;i++){a[i]=a[i+1];} len--;}static void solve() throws IOException{len = cin.nextInt();for(int i = 0 ; i < len ; i++ ){a[i] = cin.nextInt();} int m = cin.nextInt();for(int i=0;i<m;i++){int id = cin.nextInt();fun(id);}for(int i=0;i<len-1;i++){out.print(a[i]+" ");}out.println(a[len-1]);}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

7-10 jmu-Java-02基本语法-03-身份证排序

  1. 输入n,然后连续输入n个身份证号。
  2. 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
    输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
    输入sort2,将所有身份证按照里面的年月日升序输出。

注意:处理输入的时候,全部使用ScannernextLine()方法,以免出错。

输入样例:

6
410425198309308225
320203197206115011
431227196108033146
330226196605054190
34080019810819327X
320111197112301539
sort1
sort2
e

输出样例:

1961-08-03
1966-05-05
1971-12-30
1972-06-11
1981-08-19
1983-09-30
431227196108033146
330226196605054190
320111197112301539
320203197206115011
34080019810819327X
410425198309308225
exit

 这里采用手动排序,其实也可以实例化Comparator实现自定义类的自定义排序

import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;class struct{private String num;private int id;public struct(int id , String num){this.id = id;this.num = num;}public void setId(int id){this.id = id; }public void setNum(String Num){this.num = num; }public int getId(){return this.id;}public String getNum(){return this.num;}
}public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static String[] a = new String[9999];static int len;static struct[] sd = new struct[9999];static void pre(){for(int i=0;i<len;i++){String y = a[i].substring(6,14);sd[i] = new struct(i,y);}for(int i=0;i<len;i++){for(int j=0;j<len-1;j++){if(sd[j].getNum().compareTo(sd[j+1].getNum()) >= 1){struct tmp = sd[j];sd[j] = sd[j+1];sd[j+1] = tmp;}}}}static void sort1(){for(int i=0;i<len;i++){int id = sd[i].getId();out.printf("%s-%s-%s%n",a[id].substring(6,10),a[id].substring(10,12),a[id].substring(12,14));}out.flush();}static void sort2(){for(int i=0;i<len;i++){int id = sd[i].getId();out.println(a[id]);}out.flush();}static void solve() throws IOException{len = cin.nextInt();cin.nextLine();for(int i = 0 ; i < len ; i++ ){a[i] = cin.nextLine();} pre();while(true){String op = cin.nextLine();if(op.equals("sort1")){sort1();}else if(op.equals("sort2")){sort2();}else{out.println("exit");break;}}}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

7-11 jmu-java-m02-使用二维数组存储多元线性方程组

题面

可以使用二维数组存储来存储线性方程组的系数与常数。比如,对于如下3元线性方程组
3x+y+z=1
6x+2y+z=-1
-2x+2y+z=7
可以使用二位数组存储
2 1 1 1
6 2 1 -1
-2 2 1 7
编写一个程序可以存储n元线性方程组

输入格式:

整数n,代表n元
n行、每行n+1列线性方程组的系数与常数。系数与常数为double型。

输出格式:

格式化输出二维数组。注意:使用Arrays.deepToString进行格式化输出。
依次输出n行线性方程组的系数与常数。系数以 , 分隔,系数与常数之间以 = 分隔,= 之间有两个空格。

输入样例:

3
2 1 1 1
6 2 1 -1
-2 2 1 7

输出样例:

[[2.0, 1.0, 1.0, 1.0], [6.0, 2.0, 1.0, -1.0], [-2.0, 2.0, 1.0, 7.0]]
2.0, 1.0, 1.0 = 1.0
6.0, 2.0, 1.0 = -1.0
-2.0, 2.0, 1.0 = 7.0
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static double[][] arr; static void solve() throws IOException{int len = cin.nextInt();arr = new double[len][len+1];for(int i = 0 ; i < len ; i++ ){for(int j=0;j<=len;j++){arr[i][j]=cin.nextDouble();}} String res = Arrays.deepToString(arr);out.println(res);for (int i = 0; i < len; i++) {StringBuilder str = new StringBuilder();for (int j = 0; j < len; j++) {str.append(arr[i][j]).append(", ");}str.delete(str.length() - 2, str.length());str.append(" = ").append(arr[i][len]);out.println(str);}}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

7-12 sdut-array2-1-矩阵转置(I)

从键盘输入矩阵的行数N,和一个N×N阶的矩阵,编程输出它的转置矩阵。

输入格式:

首行为矩阵的行数(列数)N;
然后是N行N列组成矩阵的数据。每行内数据之间用空格隔开。

输出格式:

矩阵格式输出,每行内非尾部的每个数据后跟一个空格,行尾数据后不加空格,为换行符。

输入样例:

4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4

输出样例:

1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;public class Main {static PrintWriter out = new PrintWriter(System.out);static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin = new Scanner(System.in);static int[][] arr; static void solve() throws IOException{int len = cin.nextInt();arr = new int[len][len+1];for(int i=0;i<len;i++){for(int j=0;j<len;j++){arr[i][j]=cin.nextInt();}} for(int i=0;i<len;i++){for(int j=0;j<len;j++){out.print(arr[j][i]);if(j!=len-1){out.print(" ");}}out.println();}}public static void main(String [] args) throws IOException{solve();out.flush();}
}

 

 

http://www.lryc.cn/news/183680.html

相关文章:

  • Android12 OTA编译差分包报错问题
  • 现代c++手撸2309神经网络最简化版230901
  • Qt之显示PDF文件
  • [极客大挑战 2019]FinalSQL - 异或盲注
  • 【Go语言实战】(25) 分布式算法 MapReduce
  • 【网络安全-信息收集】网络安全之信息收集和信息收集工具讲解(提供工具)
  • 战火使命ssr排名,战火使命角色强度排行
  • CSS之linear-gradient( ) 函数—背景颜色渐变设计
  • [Unity]未能加载一个或多个断点问题
  • Qt中的基础数据类型
  • 2023阿里云域名优惠口令大全
  • 湖南软件测评公司简析:软件功能测试和非功能测试的联系和区别
  • HuggingFace Transformers教程(1)--使用AutoClass加载预训练实例
  • Qt获取当前所用的Qt版本、编译器、位数等信息
  • 《C和指针》笔记31:多维数组的数组名、指向多维数组的指针、作为函数参数的多维数组
  • 【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)
  • Go Gin Gorm Casbin权限管理实现 - 2. 使用Gorm存储Casbin权限配置以及`增删改查`
  • DNDC模型的温室气体排放分析
  • vue、全局前置守卫
  • OpenWRT、Yocto 、Buildroot和Ubuntu有什么区别
  • 数据挖掘(3)特征化
  • 【RabbitMQ 实战】08 集群原理剖析
  • 2023年 2月3月 工作经历
  • selenium京东商城爬取
  • 用pandas处理数据时,使变量能够在不同的Notebook会话页面进行传递,魔法命令%store
  • 选择适合户外篷房企业的企业云盘解决方案
  • 松鼠搜索算法(SSA)(含MATLAB代码)
  • 折半+dp之限制转状态+状压:CF1767E
  • 如何写出优质代码
  • ChatGLM2-6B的通透解析:从FlashAttention、Multi-Query Attention到GLM2的微调、源码解读