编译一个简单的java程序

本文介绍了一个使用Java编写的海岸线长度计算程序。该程序通过读取标准输入的数据,解析输入字符串并计算由1和0组成的二维网格中岛屿的海岸线总长度。程序包括了错误检查,确保输入数据的有效性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 题目

url:http://jobs.p1.com/tech/
附件

2 程序

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.Scanner;
 
public class CoastLength {
 
	  public static void main(String[] args) throws IOException   {
		 BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
		 String str=new String();
		 Integer s1=0;
		 Integer s2=0;
		 String s = new String();
		 for(s1=0,s2=0;true;){
			 
			 str = strin.readLine();  
			 s1 = str.charAt(0)-48;  
			 
			 String st  = str.substring(2, str.length());
			  
			 if(s1>=1&&s2<1000&&str.charAt(1)==32&&st.length()>4){
				 System.out.println("oooo");
				 continue;
			 }
			 s2 =  Integer.parseInt(st);  
			 System.out.println("the input data should only contain 1 or 0");
			 Scanner in = new Scanner(System.in);    
		     for(int j=0;j<s1;j++){
		    	   s += in.next(); 
		     }	
			 if(s.matches("[0-1]*")&&new Integer(s.length()).equals(s1*s2)){
					break;
			}     
		 }
			     int result = 0;
				    int [][] arr = new int[s1][s2];  
		 		    result =  method(s1,s2,s);
				    System.out.println("result"+result);
	}	
	 public static int method(int s1,int s2,String s){
			int result=0;
			int [][] arr = new int[s1][s2];
	 		for(int i=0;i<arr.length;i++){
	 			for(int j=0;j<arr[i].length;j++){
	 				 	arr[i][j] = s.charAt(i*arr[i].length+j)-48; 
	 			 }
	 		 }
			for(int i=0;i<arr.length;i++){
				for(int j=0;j<arr[i].length;j++){
				//	arr[i][j] = s.charAt(i*arr[i].length+j)-48; 
					if(arr[i][j]==1){
						result+=4;
						if(i-1!=-1 && arr[i-1][j]==1)
							result-=1;
						if(j-1!=-1 && arr[i][j-1]==1)
							result-=1;
						if(i+1!=arr.length && arr[i+1][j]==1)
							result-=1;
						if(j+1!=arr[i].length && arr[i][j+1]==1)
							result-=1;
					}
					if(arr[i][j]==0){
						if((i-1!=-1 && arr[i-1][j]==1)&&(j-1!=-1 && arr[i][j-1]==1)
								&&(i+1!=arr.length && arr[i+1][j]==1)&&(j+1!=arr[i].length && arr[i][j+1]==1))
							result-=4;
					}
				}
			}
			return result;
		}
/*	 public static void print(int[][] topc){
		 for(int i=0;i<topc.length ;i++){
			 for(int j=0;j<topc[i].length ;j++){
				 System.out.print (topc[i][j]);
			 }
			 System.out.println();
		 }
	 }*/
}

 3 保存方式 编码ANSI 

 4 cmd窗口

 

4.1 设置字符编码方式为utf -8 

C:\Windows\System32>chcp 65001
Active code page: 65001

 4.2 

编译且运行出结果
D:\>javac -d D:\ CoastLength.java
D:\>java CoastLength
5 6
the input data should only contain 1 or 0
011110
010110
111000
000010
000000
result20

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值