P1042 乒乓球(模拟,字符串,不指定输入,洛谷,java)
程序员文章站
2022-03-24 20:47:51
...
洛谷链接:https://www.luogu.com.cn/problem/P1042
借鉴链接:https://blog.csdn.net/a1439775520/article/details/90722794
注意:踩了坑,多输入了一个空行。又学会了一种不指定输入方法。
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;
}
}
}
}
}
下一篇: 暴风影音怎么截取正在观看的视频片段