L1-017 到底有多二 (15分)java

L1-017 到底有多二 (15分)

一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:

输入第一行给出一个不超过50位的整数N。

输出格式:

在一行中输出N犯二的程度,保留小数点后两位。

输入样例:

-13142223336

输出样例:

81.82%

鸣谢安阳师范学院段晓云老师和软件工程五班李富龙同学补充测试数据!

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String s=scan.nextLine();
        char []ch=s.toCharArray();
        double m=0;
        int n=0;
        int x=(int)(ch[s.length()-1])-48;
        if(ch[0]=='-')
        {
            if(x%2==0)
            {
                for(int i=1;i<s.length();i++)
                {
                    if(ch[i]=='2')
                    {
                        n++;
                    }
                }
                m=(n*1.0)/((s.length()-1)*1.0)*1.5*2*100;
                System.out.println(String.format("%.2f",m)+"%");
            }
            else
            {
                for(int i=1;i<s.length();i++)
                {
                    if(ch[i]=='2')
                    {
                        n++;
                    }
                }
                m=(n*1.0)/((s.length()-1)*1.0)*1.5*100;
                System.out.println(String.format("%.2f",m)+"%");
            }
        }
        else
        {
            if(x%2==0)
            {
                for(int i=0;i<s.length();i++)
                {
                    if(ch[i]=='2')
                    {
                        n++;
                    }
                }
                m=(n*1.0)/(s.length()*1.0)*2*100;
                System.out.println(String.format("%.2f",m)+"%");
            }else
            {
                for(int i=0;i<s.length();i++)
                {
                    if(ch[i]=='2')
                    {
                        n++;
                    }
                }
                m=(n*1.0)/(s.length()*1.0)*100;
                System.out.println(String.format("%.2f",m)+"%");
            }
        }
    }
}
<think>好的,用户问的是L1-017 Java错误,但根据提供的引用内容,实际相关的错误是关于api-ms-win-crt-runtime-l1-1-0.dll丢失的问题。首先需要确定用户可能混淆了错误代码,比如L1-017可能是指某个特定的错误编号,但根据引用中的信息,正确的错误涉及的是缺失的DLL文件。 接下来,需要整理引用中的解决方案。引用1提到多种解决方法,引用2建议手动下载DLL或安装运行库,引用3提供了VC Redist的下载链接,引用4详细描述了安装特定系统更新的步骤,比如KB2999226和KB2919355,尤其是在Windows系统上。 用户的问题可能在Java环境中出现这个DLL错误,比如运行Java程序时系统找不到该DLL。这可能是因为Java依赖的Visual C++运行库未正确安装,或者系统更新缺失。需要将这些信息整合,步骤解释错误原因,并提供对应的解决方法,如安装VC++ 2015 Redistributable、安装系统更新、修复系统文件等。 同时,用户提到的L1-017可能与某个具体应用或题目中的错误编号相关,但根据现有资料,应优先处理DLL缺失问题。需要确保回答结构清晰,点列出原因和解决方案,并引用提供的参考资料来支持每个步骤的有效性。</think>### L1-017 Java错误解释及解决方案 "L1-017"本身并非Java标准错误代码,但根据描述中提到的**“丢失api-ms-win-crt-runtime-l1-1-0.dll”**,可以判断该错误与Windows系统环境或Java运行依赖的Visual C++组件缺失有关。以下是具体析及解决方法: --- #### **错误原因** 1. **Visual C++运行库缺失** Java程序(尤其是JRE/JDK)依赖Visual C++ Redistributable组件(如2015版)提供的运行时库。若未安装或安装损坏,会导致`api-ms-win-crt-runtime-l1-1-0.dll`缺失错误[^1][^2][^3]。 2. **Windows系统更新未完成** 某些系统更新(如KB2999226、KB2919355)是Visual C++ 2015运行库的依赖项。若未安装这些更新,即使安装运行库也可能失败[^4]。 3. **系统文件损坏** DLL文件可能因病毒、误删或系统错误导致损坏或丢失。 --- #### **解决方案** ##### **方法1:安装Visual C++ 2015 Redistributable** 1. 访问微软官方下载页: [Visual C++ 2015 Redistributable下载链接](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)[^3]。 2. 根据系统位数(32位或64位)选择对应版本安装。 3. 重启计算机后测试Java运行是否正常。 ##### **方法2:安装Windows系统更新** 1. 打开“控制面板” → “Windows更新”。 2. 检查并安装以下更新(需按顺序): - **KB2919355**(系统基础更新) - **KB2999226**(支持Universal C Runtime)。 3. 若自动更新失败,可手动下载安装包(需匹配系统版本)。 ##### **方法3:修复系统文件** 1. 以管理员身份运行命令提示符。 2. 输入以下命令并按回车: ```bash sfc /scannow ``` 此命令可自动修复损坏的系统文件。 ##### **方法4:重新安装JRE/JDK** 1. 卸载当前Java环境。 2. 从官网下载最新版JDK/JRE并安装。 3. 确保安装过程中未触发安全软件拦截。 --- #### **总结** 该错误本质是系统环境不完整导致的依赖缺失。优先通过**安装Visual C++ 2015运行库**和**补全系统更新**解决[^3],若仍无效,可尝试系统修复或重装Java环境。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值