记负均正II、字符逆序题目

HJ105 记负均正II

描述

输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0

本题有多组输入数据,输入到文件末尾。

数据范围:1≤𝑛≤50000 1≤n≤50000 ,其中每个数都满足 ∣𝑣𝑎𝑙∣≤106 ∣val∣≤106

输入描述:

输入任意个整数,每行输入一个。

输出描述:

输出负数个数以及所有非负数的平均值

示例:

输入:
 -13
 -4
 -7

输出:
 3
 0.0

1

输入:
 -12
 1
 2

输出:
 1
 1.5

 

分析:

​ 1.使用while循环。

 

代码:

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count=0;
        int count1=0;
        double average=0.0;
        while(sc.hasNextInt()){
            int num=sc.nextInt();
            if(num<0){
                count++;
            }else if(num>0){
                average+=num;
                count1++;
            }
        }

        System.out.println(count);
        if(average==0){
            System.out.println(0.0);
            return;
        }
        System.out.printf("%.1f",average/count1);

    }
}

 
 

大佬代码:

import java.util.Scanner;
 
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int temp = 0;
        int countN = 0;
        int countP = 0;
        double sum = 0.0;
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            temp = in.nextInt();
            if(temp<0){
                countN++;
            }else if(temp>0){
                countP++;
                sum += temp;
            }
        }
        System.out.println(countN);
        if(countP==0){
            System.out.printf("0.0");
        }else{
            System.out.printf("%.1f\n",sum/countP);
        }
    }
}

 
 

 

HJ106 字符逆序

描述

将一个字符串str的内容颠倒过来,并输出。

数据范围:1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤10000 1≤len(str)≤10000

输入描述:

输入一个字符串,可以有空格

输出描述:

输出逆序的字符串

示例:

输入:I am a student
输出:tneduts a ma I
输入:nowcoder
输出:redocwon

 

分析:

​ 1.使用StringBuilder类的reverse函数逆序字符串。

​ 2.使用for循环让字符串逆序。

 

代码:

方法一:使用StringBuilder类的reverse函数逆序字符串。

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s=sc.nextLine();
        StringBuilder sb=new StringBuilder(s);
        sb=sb.reverse();
        s=sb.toString();
        System.out.println(s);
    }
}

 
 

方法二:使用for循环让字符串逆序。

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s=sc.nextLine();

        for (int i =  s.length()-1; i >=0; i--) {
            System.out.print(s.charAt(i));

        }

    }
}

 

 

大佬代码:

import java.util.*;
 
public class Main {
 
    private String reverse(String str) {
        StringBuilder res = new StringBuilder(str);
        return res.reverse().toString();
    }
 
    public Main() {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String str = in.nextLine();
            String res = reverse(str);
            System.out.println(res);
        }
   }
 
    public static void main(String[] args)
    {
        Main solution = new Main();
    }
}

 
 
 

import java.util.*;
 
public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] ch = str.toCharArray();
        int length = ch.length;
        for(int i=0;i<length/2;i++){
            char temp = ch[i];
            ch[i] = ch[length-1-i];
            ch[length-1-i]=temp;
        }
        System.out.println(new String(ch));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值