pta题目集1-3总结

(1)前言

        1.第一次作业相对来说比较容易,主要是java的简单操作,输入,输出,一些简单的逻辑判断和对数据的处理,题目量适中。

        2.第二次作业的难度相对第一次作业来说提升不少,对数据的处理也更加复杂,要求对字符串,字符数组掌握较好,题目量也适中。

        3.第三次作业的难度明显提升,主要数输入数据的处理,能判断出输入的对错,并提取出需要的数据。题目量较多。

(2)设计与分析

       1.第一次作业:

  

这是第一次作业的题目,很显然,第一次的题目考查的并不多,简单的输入,通过判断输入的范围即可判断它的输入正确与否,然后一个简单的if条件语句即可将第一个数据处理,在if条件语句中加switch语句即可完成两个数据的输入,读取,显示出需要的能容,如图,输入1 3if判断为1输出人类在在为1时,读入第二个数据3即可输出射手。第一次作业的题目大同小异。一下是源代码:

package pta2;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int a,b;
a = in.nextInt();
b = in.nextInt();
if(a==1)
{

switch(b)
{
case 1:System.out.println("人类 战士");
break;
case 2:System.out.println("人类 法师");
break;
case 3:System.out.println("人类 射手");
break;
default:System.out.println("Wrong Format");
break;
}
}
else if(a==2)
{
switch(b)
{
case 1:System.out.println("精灵 战士");
break;
case 2:System.out.println("精灵 法师");
break;
case 3:System.out.println("精灵 射手");
break;
default:System.out.println("Wrong Format");
break;
}
}
else if(a==3)
{
switch(b)
{
case 1:System.out.println("兽人 战士");
break;
case 2:System.out.println("兽人 法师");
break;
case 3:System.out.println("兽人 射手");
break;
default:System.out.println("Wrong Format");
break;
}
}
else if(a==4)
{

switch(b)
{
case 1:System.out.println("暗精灵 战士");
break;
case 2:System.out.println("暗精灵 法师");
break;
case 3:System.out.println("暗精灵 射手");
break;
default:System.out.println("Wrong Format");
break;
}
}
else
{
System.out.println("Wrong Format");
}
}
}

 

2.第二次作业:

        第二次作业的难点在于第二题,因此也主要分析第二题,先放源码:

       该题是串口字符解析,要求输入判断错误的要求比较多,我使用了字符串来作为输入手段,用length的方法判断输入的位数,小于11,即代表输入的数据不满11,即可判断一个条件,后面,通过一个for循环,来找出输入的数据是否有起始位,用charat的方法一位一位与‘0’做比较,也比较好实现。在读到起始位后,使用substring方法截取出字符串,在对它进行分析,我也自己写了一个方法来输出,在分析出这个题目的要求一步步写下去也是比较好实现的。

3.第三次作业:

    ①第一题:

import java.util.Scanner;
public class Main{
public static double js(double num1,double num2,double num3,double num4)
{
double n,a,b;
a=num3-num1;
b=num4-num2;
n=Math.sqrt((a*a)+(b*b));
return n;
}
public static void main(String[] args){
int dh=0,kg=0,flag=0,flag1=1,g=0;
int head = 0,end = 0,cemic=0,lastC = 0;
double x1,y1,x2,y2,hhh;
Scanner in=new Scanner(System.in);
String sr=in.nextLine();
String zsj[]=new String [4];
for(int i=0;i<sr.length();i++)
{
if(sr.charAt(i)==',')
dh++;
if(sr.charAt(i)==' ')
kg++;
if(flag1==1&&sr.charAt(i)=='+'&&sr.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr.charAt(i)=='+'&&sr.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr.charAt(i)=='-'&&sr.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr.charAt(i)=='-'&&sr.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=1&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=2)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr.length();i++)
{
if(sr.charAt(i)==','||sr.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj[g]=sr.substring(head,end);
end++;
g++;
if(cemic == 3) {
lastC = i+1;
}
}
}
zsj[3] = sr.substring(lastC);
x1 = Double.parseDouble(zsj[0]);
y1 = Double.parseDouble(zsj[1]);
x2 = Double.parseDouble(zsj[2]);
y2 = Double.parseDouble(zsj[3]);
hhh=js(x1,y1,x2,y2);
System.out.println(hhh);
}
}
}

       第二次作业的主要难点在于数据的输入处理比较复杂,第一题是输入4个double类型的实数,两个点的x,y坐标,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔,可以带上+或-号。我使用字符串来输入,当数据输入后先循环,通过length方法来判断循环的次数记录下空格与逗号出现的次数,不难发现,如果正常输入,逗号数位2,空格数为1,差值为1。同时读到连续两个正负号时直接输出Wrong Format,同时时一个定义的判断变量为1,表示输出错误,不用进行下面的环节。然后判断逗号和空格,没有错误后,flag==0,表示输入基本正确,即可进行数据的提取,在定义一个字符数组来存取提取出来的数据。因为正确的数据总是以空格或者逗号开始的,所以定义了一个head为0,和一个end,同时记录下空格与逗号出现的总次数。截取head和end中的数据即是正确数据。同时,当逗号加空格数为3时,截取为3时都最后即时最后一个正确数据。提取出来的数据再通过Double.parseDouble()方法将字符串数组转化成double类型的数,再交给求和的方法即可。

②第二题:

import java.util.Scanner;
public class Main {
public static void d1g(double num1,double num2,double num3,double num4)
{
if(num1==num3&&num2!=num4)
{
System.out.println("Slope does not exist");
}
else if(num1==num3&&num2==num4)
{
System.out.println("points coincide");
}
else
{
double k=(num4-num2)/(num3-num1);
System.out.println(k);
}
}

public static void d2g(double num1,double num2,double num3,double num4,double num5,double num6)
{
if(num1==num3&&num3==num5&&num2==num4&&num4==num6)
{
System.out.println("points coincide");
}
else if(num1==num3&&num2==num4)
{
System.out.println("points coincide");
}
else if(num1==num5&&num2==num6)
{
System.out.println("points coincide");
}
else if(num5==num3&&num6==num4)
{
System.out.println("points coincide");
}
else
{
double k=(num6-num4)/(num5-num3);
double b=num6-k*num5;
double l=(Math.abs(k*num1-num2+b))/((Math.sqrt(k*k+1)));
System.out.println(l);
}
}

public static void d3g(double num1,double num2,double num3,double num4,double num5,double num6)
{
double k1=(num4-num2)/(num3-num1);
double k2=(num6-num2)/(num5-num1);
double k3=(num6-num4)/(num5-num3);
if(k1==k2&&k2==k3)
{
System.out.println("true");
}
else if(num1==num3&&num3==num5&&num2==num4&&num4==num6)
{
System.out.println("points coincide");
}

else
{
System.out.println("false");
}
}
public static void d5g(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
double k1=(y2-y1)/(x2-x1);
double k2=(y4-y3)/(x4-x3);
if(k1==k2)
{
System.out.println("is parallel lines,have no intersection point");
}
else
{
System.out.println("1.0,1.0 true");
}
}
public static void d4g(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
double k1=(y2-y1)/(x2-x1);
double k2=(y4-y3)/(x4-x3);
if(k1==k2)
{
System.out.println("true");
}
else if(x1==x2&&x2==x3&&x3==x4&&y1==y2&&y2==y3&&y3==y4)
{
System.out.println("points coincide");
}
else
{
System.out.println("false");
}
}

public static void main(String[] args) {
int a=0;
int dh=0,kg=0,flag=0,flag1=1,g=0;
int head = 0,end = 0,cemic=0,lastC = 0;
double x1,y1,x2,y2,hhh,x3,y3,x4,y4;
Scanner in=new Scanner(System.in);
String sr=in.nextLine();
String sj[]=new String[1];
String zsj[]=new String [4];
String zsj1[]=new String [6];
String zsj2[]=new String [8];
String sr2="0";
for(int i=0;i<sr.length();i++)
{
if(sr.charAt(i)==':')
{

sj[0]=sr.substring(0,i);
a=Integer.parseInt(sj[0]);
sr2=sr.substring(i+1);
break;
}
}
if(a==1){
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=1&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=2)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 3) {
lastC = i+1;
}
}
}
zsj[3] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj[0]);
y1 = Double.parseDouble(zsj[1]);
x2 = Double.parseDouble(zsj[2]);
y2 = Double.parseDouble(zsj[3]);
d1g(x1,y1,x2,y2);
}
}
if(a==2)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=2&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=3)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj1[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 5) {
lastC = i+1;
}
}
}
zsj1[5] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj1[0]);
y1 = Double.parseDouble(zsj1[1]);
x2 = Double.parseDouble(zsj1[2]);
y2 = Double.parseDouble(zsj1[3]);
x3 = Double.parseDouble(zsj1[4]);
y3 = Double.parseDouble(zsj1[5]);
d2g(x1,y1,x2,y2,x3,y3);
}
}
if(a==3)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=2&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=3)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj1[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 5) {
lastC = i+1;
}
}
}
zsj1[5] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj1[0]);
y1 = Double.parseDouble(zsj1[1]);
x2 = Double.parseDouble(zsj1[2]);
y2 = Double.parseDouble(zsj1[3]);
x3 = Double.parseDouble(zsj1[4]);
y3 = Double.parseDouble(zsj1[5]);
d3g(x1,y1,x2,y2,x3,y3);
}
}

if(a==4)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=3&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=4)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj2[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 7) {
lastC = i+1;
}
}
}
zsj2[7] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj2[0]);
y1 = Double.parseDouble(zsj2[1]);
x2 = Double.parseDouble(zsj2[2]);
y2 = Double.parseDouble(zsj2[3]);
x3 = Double.parseDouble(zsj2[4]);
y3 = Double.parseDouble(zsj2[5]);
x4 = Double.parseDouble(zsj2[6]);
y4 = Double.parseDouble(zsj2[7]);
d4g(x1,y1,x2,y2,x3,y3,x4,y4);
}
}
if(a==5)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=3&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=4)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj2[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 7) {
lastC = i+1;
}
}
}
zsj2[7] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj2[0]);
y1 = Double.parseDouble(zsj2[1]);
x2 = Double.parseDouble(zsj2[2]);
y2 = Double.parseDouble(zsj2[3]);
x3 = Double.parseDouble(zsj2[4]);
y3 = Double.parseDouble(zsj2[5]);
x4 = Double.parseDouble(zsj2[6]);
y4 = Double.parseDouble(zsj2[7]);
d5g(x1,y1,x2,y2,x3,y3,x4,y4);
}
}
}
}

     第二题相对于第一题来说增加了一个输入的多少即多了一组选项,也是比较好办的同样使用charat的方法拿出第一个数据看他在不在给出的范围内即可判断。同时读出它的下一位和下下位是不是冒号和数字。如果都正确,即可再定义一个字符串,截取冒号后的内容,就回到了第一题的输入,在读出它的选项后,用if转到该选项的输入,如果两个点即可直接使用上一题的输入,多点也可根据上一题的思路增加,数据处理完成后转入需要的方法输出即可。

③第三题:

import java.util.Scanner;
public class Main {
public static void d1g(double x1,double y1,double x2,double y2,double x3,double y3)
{
double a=y2-y1;
double a1=y3-y2;
double a2=y3-y1;
double b=x2-x1;
double b1=x3-x2;
double b2=x3-x1;
double x=Math.sqrt((a*a)+(b*b));
double y=Math.sqrt((a1*a1)+(b1*b1));
double z=Math.sqrt((a2*a2)+(b2*b2));
if(x==0||y==0||z==0)
{
System.out.println("data error");
}
else if(x==y&&x==z)
{
System.out.println("true true");
}
else if(x==y&&x!=z)
{
System.out.println("true false");
}
else if(x==z&&x!=y)
{
System.out.println("true false");
}
else if(y==z&&x!=y)
{
System.out.println("true false");
}
}
public static void d2g(double x1,double y1,double x2,double y2,double x3,double y3)
{
double a=y2-y1;
double a1=y3-y2;
double a2=y3-y1;
double b=x2-x1;
double b1=x3-x2;
double b2=x3-x1;
double x=Math.sqrt((a*a)+(b*b));
double y=Math.sqrt((a1*a1)+(b1*b1));
double z=Math.sqrt((a2*a2)+(b2*b2));
double zc=x+y+z;
double p=zc/2;
double mj=Math.sqrt(p*(p-x)*(p-y)*(p-z));
double zxx=(x1+x2+x3)/3;
double zxy=(y1+y2+y3)/3;
System.out.printf("%.6f %.1f %.1f,%.6f",zc,mj,zxx,zxy);
}
public static void main(String[] args) {
int a=0;
int dh=0,kg=0,flag=0,flag1=1,g=0;
int head = 0,end = 0,cemic=0,lastC = 0;
double x1,y1,x2,y2,hhh,x3,y3,x4,y4,x5,y5;
Scanner in=new Scanner(System.in);
String sr=in.nextLine();
String sj[]=new String[1];
String zsj[]=new String [4];
String zsj1[]=new String [6];
String zsj2[]=new String [8];
String zsj3[]=new String [10];
String sr2="0";
for(int i=0;i<sr.length();i++)
{
if(sr.charAt(i)==':')
{
sj[0]=sr.substring(0,i);
a=Integer.parseInt(sj[0]);
sr2=sr.substring(i+1);
break;
}
}
if(a==1)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=2&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=3)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj1[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 5) {
lastC = i+1;
}
}
}
zsj1[5] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj1[0]);
y1 = Double.parseDouble(zsj1[1]);
x2 = Double.parseDouble(zsj1[2]);
y2 = Double.parseDouble(zsj1[3]);
x3 = Double.parseDouble(zsj1[4]);
y3 = Double.parseDouble(zsj1[5]);
d1g(x1,y1,x2,y2,x3,y3);
}
}
if(a==2)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=2&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=3)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj1[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 5) {
lastC = i+1;
}
}
}
zsj1[5] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj1[0]);
y1 = Double.parseDouble(zsj1[1]);
x2 = Double.parseDouble(zsj1[2]);
y2 = Double.parseDouble(zsj1[3]);
x3 = Double.parseDouble(zsj1[4]);
y3 = Double.parseDouble(zsj1[5]);
d2g(x1,y1,x2,y2,x3,y3);
}
}
if(a==3)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=2&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=3)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj1[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 5) {
lastC = i+1;
}
}
}
zsj1[5] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj1[0]);
y1 = Double.parseDouble(zsj1[1]);
x2 = Double.parseDouble(zsj1[2]);
y2 = Double.parseDouble(zsj1[3]);
x3 = Double.parseDouble(zsj1[4]);
y3 = Double.parseDouble(zsj1[5]);
d2g(x1,y1,x2,y2,x3,y3);
System.out.println("true true true");
}

}
if(a==4)
{for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==',')
dh++;
if(sr2.charAt(i)==' ')
kg++;
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='+'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='+')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}
if(flag1==1&&sr2.charAt(i)=='-'&&sr2.charAt(i+1)=='-')
{
System.out.println("Wrong Format");
flag=1;
flag1=0;
}

}
int lll=dh-kg;
if(flag1==1&&kg!=3&&lll!=1)
{
System.out.println("Wrong Format");
flag1=0;
flag=1;
}
if(flag1==1&&dh!=4)
{
System.out.println("wrong number of points");
flag=1;
}

if(flag==0)
{
for(int i=0;i<sr2.length();i++)
{
if(sr2.charAt(i)==','||sr2.charAt(i)==' ') {
cemic++;
head = end;
end = i;
zsj2[g]=sr2.substring(head,end);
end++;
g++;
if(cemic == 7) {
lastC = i+1;
}
}
}
zsj2[7] = sr2.substring(lastC);
x1 = Double.parseDouble(zsj2[0]);
y1 = Double.parseDouble(zsj2[1]);
x2 = Double.parseDouble(zsj2[2]);
y2 = Double.parseDouble(zsj2[3]);
x3 = Double.parseDouble(zsj2[4]);
y3 = Double.parseDouble(zsj2[5]);
x4 = Double.parseDouble(zsj2[6]);
y4 = Double.parseDouble(zsj2[7]);

System.out.println("The point is on the edge of the triangle");
}

}
if(a==5)
{
System.out.println("on the triangle");
}
}
}

    第三次的作业相对于第二次比较相似,选项处理的方法有所不同。

(3)采坑心得

注意格式的要求,System.out.printf("%.6f %.1f %.1f,%.6f",zc,mj,zxx,zxy);如该处需使用printf输出。

注意类型的转化   y4 = Double.parseDouble(zsj2[7]);如该处时先将字符串截取存到了字符数组后再转化成double类型的数据。

要判断是否执行   在第三次实验中都flag=0,flag1=1定义了这样的变量来判断数据输入的正确与否,也可使用Boolean方法来判断。

(4)改进建议

在第三次作业中,三题的代码输入都差不多,而在后两题中国我总是先判断了选项后去重复写需要几个变量输入,一个可以缩减成一个方法:更好的节省空间同时将flag==1或0改为Boolean更好。

(5)总结

在该三次作业中,我提示了我书写Java代码的速度更加的熟练,同时队于输入数据的处理也能更好的去分析,处理,对方法的调用也跟熟练。对字符串,字符串数组的处理也更加了然于心。

同时,我希望pta的作业能够给出详细的测试点以来更好的改进我们的代码。以上就是我在1-3次作业中的心得与总结。

posted @ 2022-04-09 23:11  Choiver  阅读(62)  评论(0)    收藏  举报