SuperShan_6666 2019-11-09 21:37 采纳率: 0%
浏览 173

201909-3 字符画 java 运行错误

看了一些大佬的代码思路,自己敲了一遍,测试的时候结果貌似都对了(???)可是一提交到系统就报错。本人愚笨,请各位帮忙看看。

import java.util.Scanner;

public class Main {

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String[] input = scanner.nextLine().split(" ");
        int m = Integer.parseInt(input[0]);
        int n = Integer.parseInt(input[1]);
        String[] data = scanner.nextLine().split(" ");
        int p = Integer.parseInt(data[0]);
        int q = Integer.parseInt(data[1]);
        int s = p*q;

        int[][][] color = new int[n][m][3];

        for(int i=0 ; i<n ; i++) {
            for(int j=0 ; j<m ; j++) {
                String line = scanner.nextLine();
                int t = 0;
                if(line.length()==2) {
                    for(int k=0 ; k<3 ; k++)
                     color[i][j][k]=Integer.parseInt(line.substring(1,1)+line.charAt(1),16);
                }else if(line.length()==4) {
                    for(int k=0 ; k<3 ; k++)
                        color[i][j][k]=Integer.parseInt(line.substring(k+1,k+2)+line.charAt(k+1),16);
                }
                else {
                    for(int k=0 ; k<3 ; k++) {
                        color[i][j][k]=Integer.parseInt(line.substring(t+1,t+3), 16);
                        t=t+2;
                    }
                }
            }   
        }
        scanner.close();

        int R=0,G=0,B=0,r=0,g=0,b=0;
        for(int i=0 ; i<n/q ; i++) {
            for(int j=0 ; j<m/p ; j++) {
                R=0;G=0;B=0;
                for(int k=i ; k<q*(i+1) ; k++) {
                    for(int l=j ; l<p*(j+1) ; l++) {
                        R+=color[k][l][0];
                        G+=color[k][l][1];
                        B+=color[k][l][2];
                    }
                }
                R/=s;G/=s;B/=s;
                if(!(R==r&&G==g&&B==b)) {
                    if(R==0&&G==0&B==0)
                        System.out.print(toHex("[0m"));
                    else {
                        String temp = (char)27+"[48;2"+";"+String.valueOf(R)+";"+String.valueOf(G)+";"+String.valueOf(B)+"m";
                        System.out.print(toHex(temp));
                    }
                    r=R;g=G;b=B;    
                }
                System.out.print(toHex(" "));
            }
            if(R!=0||G!=0||B!=0)System.out.print(toHex((char)27+"[0m"));
            System.out.print(charToHex('\n'));
            r=g=b=0;
        }

    }

    public static String toHex(String str){
        String s = "";
        for(int i=0 ; i<str.length() ; i++) {
            int ch = (int)str.charAt(i);
            s = s+"\\x"+Integer.toHexString(ch).toUpperCase();
        }
        return s;
    }

    public static String charToHex(char ch){
        String s = "";
            s = s+"\\x0"+Integer.toHexString(ch).toUpperCase();
        return s;
    }
}

  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器