编辑代码

import java.util.Scanner;
import java.text.DecimalFormat;

public class HitRingCalculator {
    
    public static double calculateHitRing(double x, double y) {
        
        double distanceFromCenter = Math.sqrt(x * x + y * y); // 到中心的距离
        System.out.println("击中位置 (" + x + ", " + y + ") :: " + distanceFromCenter+"毫米");
        
        // 计算激光在电子靶上命中的环数
        // if (x < 0.25 && y < 0.25) {
        //     double offset = 0.25 - x;
        //     double extraRings = Math.round(offset / 0.025) / 10.0; // 计算多出来的环数
        //     System.out.println("击中位置 (" + x + ", " + y + ") 对应的环数是:: " +(10.0 + extraRings)+" 环");
        //     return 10.0 + extraRings;
        // }
        if (distanceFromCenter<0.25) {
            double offset = 0.25 - distanceFromCenter;
            double extraRings = Math.round(offset / 0.027) / 10.0; // 计算多出来的环数
            System.out.println("击中位置 (" + x + ", " + y + ") 大于10环数是:: " +extraRings+" 环");
            System.out.println("击中位置 (" + x + ", " + y + ") 对应的环数是:: " +(10.0 + extraRings)+" 环");
            return 10.0 + extraRings;

        }



        // double[] radii = {0.25, 2.75, 5.25, 7.75, 10.25, 12.75, 15.25, 17.75, 20.25, 22.75};
        // double hitRing = 1.0;

        // for (int i = 0; i < radii.length; i++) {
        //     if (distanceFromCenter <= radii[i]) {
        //         hitRing = 10.0 - i;
        //         if(distanceFromCenter==radii[i]){
        //             System.out.println("击中位置 (" + x + ", " + y + ") 对应的原始环数是: " + hitRing + " 环");
        //              return hitRing;
        //         }
        //         break;
        //     }
        // }

        



        // int currentNum=0;

        // double hitRing = 10;

        // double[] allarr={0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.25,2.5,2.75,3.0,3.25,3.5,3.75,4.0,4.25,4.5,4.75,5.0,5.25,5.5,5.75,6.0,6.25,6.5,6.75,7.0,7.25,7.5,7.75,8.0,8.25,8.5,8.75,9.0,9.25,9.5,9.75,10.0,10.25,10.5,10.75,11.0,11.25,11.5,11.75,12.0,12.25,12.5,12.75,13.0,13.25,13.5,13.75,14.0,14.25,14.5,14.75,15.0,15.25,15.5,15.75,16.0,16.25,16.5,16.75,17.0,17.25,17.5,17.75,18.0,18.25,18.5,18.75,19.0,19.25,19.5,19.75,20.0,20.25,20.5,20.75,21.0,21.25,21.5,21.75,22.0,22.25,22.5,22.75};
        // for (int i = 0; i < allarr.length; i++) {
        //     if (distanceFromCenter >= allarr[i]) {
                
        //     }
        //     else
        //     {
        //         currentNum=i;
        //         break;
        //     }
        // }

        // double a= allarr[currentNum]-distanceFromCenter;

        // double b=distanceFromCenter-allarr[currentNum-1];

        // if(a>b){
        //     for (int i = 1; i <= (currentNum-1); i++) {
        //         hitRing=hitRing-0.1;
        //     }
        // }
        // else
        // {
        //     for (int i = 1; i <= currentNum; i++) {
        //         hitRing=hitRing-0.1;
        //     }
        // }





        // 计算激光命中环数的增量,基于环之间的距离(5毫米)
        double ringInterval = 2.5; // 环之间的距离为5毫米
        //distanceFromCenter = distanceFromCenter/10; // 到中心的距离

        // 计算激光击中的环数
        double hitRing = 10.0 - (distanceFromCenter / ringInterval); // 按照距离计算击中环数,允许小数环

        System.out.println("击中位置 (" + x + ", " + y + ") 对应的原始环数是: " + hitRing + " 环");

        // double distanceRatio = (distanceFromCenter - currentRadius) / ringInterval; // 距离比例

        // double increment = distanceRatio * 0.00001; // 按比例计算增量

        // hitRing += increment; // 更新命中环数

        // 计算精确到0.1环
        // double increment = (radii[(int)(hitRing - 1)] - distanceFromCenter) / 100;
        // hitRing += increment;

        DecimalFormat df = new DecimalFormat("#.##");
        String formattedRing = df.format(hitRing);
        double roundedRing = Double.parseDouble(formattedRing);

        roundedRing = Math.round(roundedRing * 10.0) / 10.0;

        System.out.println("击中位置 (" + x + ", " + y + ")  对应的环数是:: " + roundedRing+"环");
        // System.out.println("击中位置 (" + x + ", " + y + ")  对应的完整环数是:: " + hitRing+"环");
        
        return hitRing;
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("模拟击中位置x坐标: ");
        double x = scanner.nextDouble();
        System.out.print("模拟击中位置y坐标: ");
        double y = scanner.nextDouble();
        
        calculateHitRing(x,y);

        
        scanner.close();
    }
}