欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P1042 乒乓球(模拟,字符串,不指定输入,洛谷,java)

程序员文章站 2022-03-24 20:47:51
...

洛谷链接:https://www.luogu.com.cn/problem/P1042
借鉴链接:https://blog.csdn.net/a1439775520/article/details/90722794

P1042 乒乓球(模拟,字符串,不指定输入,洛谷,java)
P1042 乒乓球(模拟,字符串,不指定输入,洛谷,java)

注意:踩了坑,多输入了一个空行。又学会了一种不指定输入方法。

1.我原来的输入的方法

import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
        
    	Scanner in=new Scanner(System.in);
        int l=0,one=0,tow=0,time=0;
        int[] win=new int[62503];
        
        while(in.hasNext()) {
        	String s=in.next();
        	//记录胜负
        	for(int i=0;i<s.length();i++) {
        		if(s.charAt(i)=='E') {
        			break;
        		}else {
        			if(s.charAt(i)=='W') {
        				win[l]=1;
        			}else {
        				win[l]=2;
        			}
        			l++;
        		}
        	}
        }
    	
        //11分制
        for(int i=0;;i++) {
        	if(win[i]==1) {one++;}  //胜场加1
        	if(win[i]==2) {tow++;}  //负场加1
        	if(win[i]==0) {
        		//到最后一段时
        		System.out.println(one+":"+tow);
        		System.out.println();
        		System.out.println();
        		break;
        	}
        	
        	if(Math.abs(one-tow)>=2) {
        		if(one>=11 || tow>=11) {
        			//当双方比分相差大于2且一方分数大等于11输出 
        			System.out.println(one+":"+tow);
        			one=0;    //比分清0
        			tow=0;   
        		}
        	}
        }
        
        //清零,为21分制计算做准备
        one=0;
        tow=0;
        
        //21分制
        for(int i=0;;i++) {
        	if(win[i]==1) {one++;}  //胜场加1
        	if(win[i]==2) {tow++;}  //负场加1
        	if(win[i]==0) {
        		//到最后一段时
        		System.out.print(one+":"+tow);
        		break;
        	}
        	
        	if(Math.abs(one-tow)>=2) {
        		if(one>=21 || tow>=21) {
        			//当双方比分相差大于2且一方分数大等于11输出 
        			System.out.println(one+":"+tow);
        			one=0;    //比分清0
        			tow=0;   
        		}
        	}
        }
       
    }
}

2.学习大佬的方法,定义可变String,一次性输入多行变成一个字符串

import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
        
    	Scanner in=new Scanner(System.in);
        int l=0,one=0,tow=0,time=0;
        int[] win=new int[62503];
        StringBuilder s = new StringBuilder();
        
        do{
        	s.append(in.next());
        }while(s.indexOf("E")==-1);
    	
      //记录胜负
    	for(int i=0;i<s.length();i++) {
    		if(s.charAt(i)=='E') {
    			break;
    		}else {
    			if(s.charAt(i)=='W') {
    				win[i]=1;
    			}else {
    				win[i]=2;
    			}
    		}
    	}
    	
        //11分制
        for(int i=0;;i++) {
        	if(win[i]==1) {one++;}  //胜场加1
        	if(win[i]==2) {tow++;}  //负场加1
        	if(win[i]==0) {
        		//到最后一段时
        		System.out.println(one+":"+tow);
        		System.out.println();
        		break;
        	}
        	
        	if(Math.abs(one-tow)>=2) {
        		if(one>=11 || tow>=11) {
        			//当双方比分相差大于2且一方分数大等于11输出 
        			System.out.println(one+":"+tow);
        			one=0;    //比分清0
        			tow=0;   
        		}
        	}
        }
        
        //清零,为21分制计算做准备
        one=0;
        tow=0;
        
        //21分制
        for(int i=0;;i++) {
        	if(win[i]==1) {one++;}  //胜场加1
        	if(win[i]==2) {tow++;}  //负场加1
        	if(win[i]==0) {
        		//到最后一段时
        		System.out.print(one+":"+tow);
        		break;
        	}
        	
        	if(Math.abs(one-tow)>=2) {
        		if(one>=21 || tow>=21) {
        			//当双方比分相差大于2且一方分数大等于11输出 
        			System.out.println(one+":"+tow);
        			one=0;    //比分清0
        			tow=0;   
        		}
        	}
        }
       
    }
}
相关标签: 算法题