关于PAT的题目问题,求大神帮忙找错

firestarer 2016-04-17 03:09:51
问题链接:https://www.patest.cn/contests/gplt/L1-2
以下是我的程序:
package Tianti;

import java.util.Scanner;

public class Main
{
public static void main(String[] args)
{
Scanner shuru=new Scanner(System.in);
String a=shuru.nextLine();
int b=1;
String[] x=a.split(" ");
for(int i=1;2*i*i-1<=Integer.parseInt(x[0]);i++)
{
b=i;
}
for(int i=0;i<b;i++)
{
for(int y=0;y<i;y++)
{
System.out.print(" ");
}
for(int y=0;y<2*(b-i)-1;y++)
{
System.out.print(x[1]);
}
System.out.println();
if(i==b-1)
{
for(int c=1;c<b;c++)
{
for(int d=0;d<b-c-1;d++)
{
System.out.print(" ");
}
for(int d=0;d<2*(c+1)-1;d++)
{
System.out.print(x[1]);
}
System.out.println();
}
}
}
System.out.println(Integer.parseInt(x[0])-2*b*b+1);

}
}
到底哪错了?
...全文
198 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
imfang 2016-04-27
  • 打赏
  • 举报
回复
注意:Java 代码需使用 Main 作为主类名 下面的代码提交成功
import java.util.Scanner;
public class Main {
	public static void main(String[] args)  {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		String c=scanner.next();
		scanner.close();
		int line=(int)Math.sqrt((n+1)/2.0);
		for(int i=line,l=2-line,s=0,h=i;i>=l;--i){
			for(int j=0;j<s;++j)System.out.print(" ");
			if(i<1)h=2-i; else h=i;
			for(int j=0;j<2*h-1;++j)System.out.print(c);
			System.out.println();
			if(i>1)++s; else --s;
		}
		System.out.println(n-2*line*line+1);
	}
}
60 *
*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********
11
firestarer 2016-04-26
  • 打赏
  • 举报
回复
引用 6 楼 firestarer 的回复:
[quote=引用 5 楼 imfang 的回复:] [quote=引用 4 楼 firestarer 的回复:] 改了还是评测答案错误,啊啊啊啊
把改后的代码贴出来![/quote] package Tianti; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner shuru=new Scanner(System.in); int number=shuru.nextInt(); String a=shuru.next(); shuru.close(); int b=1; for(int i=1;2*i*i-1<=number;i++) { b=i; } for(int i=0;i<b;i++) { for(int y=0;y<i;y++) { System.out.print(" "); } for(int y=0;y<2*(b-i)-1;y++) { System.out.print(a); } System.out.println(); if(i==b-1) { for(int c=1;c<b;c++) { for(int d=0;d<b-c-1;d++) { System.out.print(" "); } for(int d=0;d<2*(c+1)-1;d++) { System.out.print(a); } System.out.println(); } } } System.out.println(number-2*b*b+1); } }[/quote]怎么又是这样,,,
firestarer 2016-04-26
  • 打赏
  • 举报
回复
package Tianti; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner shuru=new Scanner(System.in); int number=shuru.nextInt(); String a=shuru.next(); shuru.close(); int b=1; for(int i=1;2*i*i-1<=number;i++) { b=i; } for(int i=0;i<b;i++) { for(int y=0;y<i;y++) { System.out.print(" "); } for(int y=0;y<2*(b-i)-1;y++) { System.out.print(a); } System.out.println(); if(i==b-1) { for(int c=1;c<b;c++) { for(int d=0;d<b-c-1;d++) { System.out.print(" "); } for(int d=0;d<2*(c+1)-1;d++) { System.out.print(a); } System.out.println(); } } } System.out.println(number-2*b*b+1); } }
firestarer 2016-04-26
  • 打赏
  • 举报
回复
引用 5 楼 imfang 的回复:
[quote=引用 4 楼 firestarer 的回复:] 改了还是评测答案错误,啊啊啊啊
把改后的代码贴出来![/quote] package Tianti; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner shuru=new Scanner(System.in); int number=shuru.nextInt(); String a=shuru.next(); shuru.close(); int b=1; for(int i=1;2*i*i-1<=number;i++) { b=i; } for(int i=0;i<b;i++) { for(int y=0;y<i;y++) { System.out.print(" "); } for(int y=0;y<2*(b-i)-1;y++) { System.out.print(a); } System.out.println(); if(i==b-1) { for(int c=1;c<b;c++) { for(int d=0;d<b-c-1;d++) { System.out.print(" "); } for(int d=0;d<2*(c+1)-1;d++) { System.out.print(a); } System.out.println(); } } } System.out.println(number-2*b*b+1); } }
imfang 2016-04-23
  • 打赏
  • 举报
回复
引用 4 楼 firestarer 的回复:
改了还是评测答案错误,啊啊啊啊
把改后的代码贴出来!
firestarer 2016-04-21
  • 打赏
  • 举报
回复
改了还是评测答案错误,啊啊啊啊
imfang 2016-04-21
  • 打赏
  • 举报
回复
引用 2 楼 firestarer 的回复:
Sorry啊,代码下次会注意的 可是我关了Scanner还是没用啊,提交评测还是答案错误,
你最好不要用String[] x = a.split(" "); 因为输入的数据间可能是多个空格分隔的,你的写法不太严谨。 可以这样: int lineNumber=shuru.nextInt(); String xing=shuru.next();
firestarer 2016-04-21
  • 打赏
  • 举报
回复
Sorry啊,代码下次会注意的 可是我关了Scanner还是没用啊,提交评测还是答案错误,
imfang 2016-04-19
  • 打赏
  • 举报
回复
程序没错,可以运行啊~~~ 如果要说错的,那就是你的Scanner对象没有close啊。 另外,代码要利用工具栏中的“代码”按钮设置一下,便于大家阅读。
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner shuru = new Scanner(System.in);
		String a = shuru.nextLine();
		int b = 1;
		String[] x = a.split(" ");
		for (int i = 1; 2 * i * i - 1 <= Integer.parseInt(x[0]); i++) {
			b = i;
		}
		for (int i = 0; i < b; i++) {
			for (int y = 0; y < i; y++) {
				System.out.print(" ");
			}
			for (int y = 0; y < 2 * (b - i) - 1; y++) {
				System.out.print(x[1]);
			}
			System.out.println();
			if (i == b - 1) {
				for (int c = 1; c < b; c++) {
					for (int d = 0; d < b - c - 1; d++) {
						System.out.print(" ");
					}
					for (int d = 0; d < 2 * (c + 1) - 1; d++) {
						System.out.print(x[1]);
					}
					System.out.println();
				}
			}
		}
		System.out.println(Integer.parseInt(x[0]) - 2 * b * b + 1);

	}
}
运行结果:
60 *
*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********
11

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧