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 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果