Scanner
5月18日第一节
从键盘输入n个数,求最大值。sc.nextInt();
public class _01Scanner {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("你想要输入几个数:");
int length=sc.nextInt();//输入一个int类型的值length
int[] arr=new int[length];//把length传入int类型的数组arr
for(int i=0;i<length;i++){
//循环次数确定用for循环
int num=sc.nextInt();//每循环一次,输入一个数num
arr[i]=num;//把num放入数组arr[i]
/*
arr[i]=sc.nextInt();
*/
}
System.out.println(Arrays.toString(arr));
//求最大值,进行遍历
int max=arr[0];
for (int num : arr) {
//foreach快捷键,iter+回车
if(max<num){
max=num;
}
}
System.out.println("max = " + max);
}
}
@[TOC]Random类
5月18日第二节
Random类,用于生成随机数;
public class _02Random {
public static void main(String[] args) {
Random r = new Random();//创建对象,把对象赋给一个变量
int num=r.nextInt();//随机数的范围是int类型
System.out.println("num = " + num);
for (int i = 0; i < 10; i++) {
//生成10个随机数
int num2=r.nextInt(10);//随机数的范围是0~9
System.out.println("num2 = " + num2);
}
}
}
练习:生成1~n的随机数
例如生成1~15的随机数
r.nextInt(int n);随机数的范围是0~(n-1)
public class _02Random {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int num = m(15);//调用m方法,传入一个数15
System.out.println("num = " + num);
}
}
public static int m(int num) {
//返回值,随机数,int类型
Random r = new Random();
//r.nextInt(num);输入的数是15,生成随机数0~14
// r.nextInt(num)+1;整体+1,生成随机数1~15;r.nextInt(num)+1表示的是一个数,要return回去
return r.nextInt(num)+1;
}
}
练习,生成14~17之间的随机数
创建对象:Random r = new Random();
r.nextInt(int n);随机数的范围是0~(n-1)思路:r.nextInt(4)+14
public class _03Random {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int num = m(4);
System.out.println("num = " + num);
}
}
public static int m(int num) {
Random r = new Random();
return r.nextInt(num)+14;
}
}
public class _03Random {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int num = m(14,17);//调用m方法,传入14和17
System.out.println("num = " + num);
}
}
public static int m(int num1,int num2) {
Random r = new Random();
return r.nextInt(num2-num1+1)+num1;
}
}
练习:模拟猜数字的小游戏,先随机生成一个1-100的随机数num,
通过键盘输入去猜一个数guessNumber,如果猜对了,就提示“恭喜你,猜对了!”
如果猜大了,就提示大了,如果小了就提示小了,
一共有7次,超过了还没才对就提示“哈哈,你输了!”
public class _01zy {
public static void main(String[] args) {
//系统产生一个1~100之间的随机数
Random r = new Random();
int num = r.nextInt(100) + 1;
// System.out.println("num = " + num);
for (int i = 1; i <=7; i++) {
//循环7次
Scanner sc = new Scanner(System.in);
System.out.println("请输入你猜测的数字:");
int guessNumber = sc.nextInt();//从键盘录入一个int型的数字guessNumber
//用if比较num与guessNumber
if (num > guessNumber) {
System.out.println(i + "你猜的数据" + guessNumber + "小了!");
}
else if (num < guessNumber) {
System.out.println(i + "你猜的数据" + guessNumber + "大了!");
}
else {
System.out.println("恭喜你,猜对了!");
break;
}
if(i>=7){
System.out.println("哈哈,你输了");
}
}
}
}
方法重载
5月18第一节
编写重载方法,分别实现输出字符串,字符串数组,整型数据和整形数组。
不需要返回值,用void
public class Demo01 {
public static void main(String[] args) {
print("hello world");
print(new String[]{
"123", "you", "hello", "world"});
print(78);
print(new int[]{
45, 34, 9999, 12, 3});
}
public static void print(String s) {
//传入字符串s
System.out.println("s = " + s);
}
public static void print(String[] arr) {
//传入字符串数组arr
System.out.println(Arrays.toString(arr));
}
public static void print(int i) {
//传入整型数据i
System.out.println("i = " + i);
}
public static void print(int[] arr) {
//传入整型数组arr
System.out.println(Arrays.toString(arr));
}
}
这是之前自己写的作业
public class zy01 {
public static void main(String[] args) {
String result=add("hello world");
String[] arr=add();
int c=add(3,4);
int[] arr2={
1,3,5,7};
System.out.println(result);
System.out.println(Arrays.toString(arr));
System.out.println(c);
System.out.println(Arrays.toString(arr2));
}
public static String add(String s){
return s;
}
public static String[] add(){
String[] arr={
"abc","A","B","C"};
return arr;
}
public static int add(int a,long b){
return (int)(a+b);
}
public static int[] add(int[] arr2){
//int[] arr2={1,3,5,7};
return arr2;
}
}
public class Demo02 {
public static void main(String[] args) {
int sum = getSum(-567);//传入整数-567,用sum接收一下
System.out.println("sum = " + sum);
int sum1 = getSum(3.14);
System.out.println("sum1 = " + sum1);
}
/*
num % 10 取余
num / 10 取整
*/
public static int getSum(int num){
//传入一个整数num
int sum=0;//定义变量sum求和,赋初值0
if(num<0){
//如果num是负数,把它变为正数
num=num*(-1);
}
while (num>0){
//循环条件不确定,优先使用while循环
sum+=num%10;
num=num/10;
}
return sum;
}
public static int getSum(double num){
//传入一个浮点数num
//将浮点数转换为整数,乘10
while(num!=(int)num){
num=num*10;
}
//getSum((int) num);调用上面的getSum方法,强转为int类型
return getSum((int) num);
}
}
这是之前自己写的作业
public class zy02_2kk {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
add(a);
float b=sc.nextFloat();
add(b);
}
public static void add(int a) {
int sum = 0;
while (a != 0) {
sum += a % 10;
a = a / 10;
}
System.out.println(sum);
}
//将浮点数转换为字符串
public static void add(float b) {
String str=b+"";
int sum=0;
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(c!='.'){
sum+=c-48;
}
}
System.out.println(sum);
}
}
5月18第一节
练习题: B哥去参加青年歌手大奖赛,有n个评委打分,
(去掉一个最高一个最低)求平均分?
int[] arr={12,14,11,10,8,18,23,11,14,11};
public class Demo03 {
public static void main(String[] args) {
int[] arr={
12,14,11,10,8,18,23,11,14,11};
double avg = getAvg(arr);
System.out.println("avg = " + avg);
}
public static double getAvg(int[] arr){
//传入int型数组arr
// 定义平均分变量avg,总分sum,最高分max,最低分min
double avg;
int sum = 0;
int max=arr[0];
int min=arr[0];
for (int num : arr) {
sum=sum+num;//sum赋初值0
if(max<num){
//max赋初值为数组arr的第一个元素
max=num;
}
if(min>num){
//min赋初值为数组arr的第一个元素
min=num;
}
}
avg=(sum-max-min)/(arr.length-2.0);
return avg;
}
}
public class zy03kk {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("n="+" ");
int n=sc.nextInt();
System.out.println("请输入分数:");
int[] a = new int[n];
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextInt();
}
int max=a[0] ;//最大值
int min=a[0];//最小值
int sum = 0;//平均分
for (int i = 0; i < a.length; i++) {
if (max < a[i]) {
max = a[i];
}
if (min > a[i]) {
min = a[i];
}
sum += a[i];
}
int result = (sum - max - min);
double avr = result /(a.length-2.0);
System.out.print(avr);
}
}