Java 计算样本数据中的破折号

Java 计算样本数据中的破折号,java,multidimensional-array,java.util.scanner,Java,Multidimensional Array,Java.util.scanner,我正在执行一项任务,在该任务中,我被告知检查样本数据中的“-”,当在数据中发现a-,并且散列中有相邻的破折号时,这只计算1次出现,例如,在该样本数据中,答案为4 我开始创建一个二维数组来填充它,然后我要检查数组中的破折号,但我有点困惑,我将如何进行实际计数,任何帮助都将不胜感激 这是我到目前为止所拥有的 Scanner input = new Scanner(System.in); int a = input.nextInt(); //no. of rows

我正在执行一项任务,在该任务中,我被告知检查样本数据中的“-”,当在数据中发现a-,并且散列中有相邻的破折号时,这只计算1次出现,例如,在该样本数据中,答案为4

我开始创建一个二维数组来填充它,然后我要检查数组中的破折号,但我有点困惑,我将如何进行实际计数,任何帮助都将不胜感激

这是我到目前为止所拥有的

Scanner input = new Scanner(System.in);
            int a = input.nextInt(); //no. of rows
            int b = input.nextInt(); //no. of columns

            String arr[][] = new String[a][b]; //array of strings of 10 x 20
            for(int i = 0; i<a; i++){
                for(int j = 0; j<b; j++){
                    arr[i][j] = input.next();
                }
            }
            //for test purposes
            for(String[] s : arr){
                for(String e : s){
                    System.out.print(e);
                }
            }

使用正则表达式的最简单方法。将每行视为字符串、修剪字符串,然后只允许字符串中的20个字符(基于列计数)。

其他方法可以是使用DSL算法

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
    public static void main(String... args) throws Exception {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt(); // no. of rows
        int b = input.nextInt(); // no. of columns
        Pattern pattern = Pattern.compile("#(--+)#");
        int count = 0;
        for (int i = 0; i < a; i++) {
            String temp = input.next().trim();
            if (temp.length() > b) {
                temp.substring(0, b);
            }
            Matcher matcher = pattern.matcher(temp);
            if (matcher.find()) {
                count++;
            }
        }
        System.out.println(count);
    }
}
import java.util.Scanner;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课考试{
公共静态void main(字符串…参数)引发异常{
扫描仪输入=新扫描仪(System.in);
int a=input.nextInt();//行数
int b=input.nextInt();//列数
Pattern=Pattern.compile(“#”(-+)#”);
整数计数=0;
for(int i=0;ib){
温度子串(0,b);
}
匹配器匹配器=模式匹配器(温度);
if(matcher.find()){
计数++;
}
}
系统输出打印项次(计数);
}
}

所以基本上你没有做任何工作,而是希望我们做你的家庭作业?听起来像。但这是一个有趣的谜;当然可以。创建一个
occurrences
变量,并在每次找到破折号时将其递增1。目前还不清楚显示的数据的计数将如何为4。它是以成堆的方式计算破折号的数量,上下左右相邻。这很有意义,我曾考虑使用RegEx作为检查模式的一种方法,但我不确定如何实现它,但您已经以一种简单易懂的方式完成了。这解决了我的问题,谢谢。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
    public static void main(String... args) throws Exception {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt(); // no. of rows
        int b = input.nextInt(); // no. of columns
        Pattern pattern = Pattern.compile("#(--+)#");
        int count = 0;
        for (int i = 0; i < a; i++) {
            String temp = input.next().trim();
            if (temp.length() > b) {
                temp.substring(0, b);
            }
            Matcher matcher = pattern.matcher(temp);
            if (matcher.find()) {
                count++;
            }
        }
        System.out.println(count);
    }
}