gpt4 book ai didi

java - 如何使代码更高效/更干净 - USACO 培训的首要任务

转载 作者:行者123 更新时间:2023-11-30 11:28:46 24 4
gpt4 key购买 nike

我遇到了 USACO 培训页面上的第一个问题。

任务是从 text.in 文件中请求两个字符串,将字符串转换为字母乘积的数字(其中 a=1、b=2、z=26),然后查看如果数字/47 的余数彼此相等(如果相等,打印“GO”,否则打印“STAY”)。

它在我的电脑上运行良好,但是当我发送它时,它显示

Run 1: Execution error: Your program exited with exit status `1'.

    ------ Data for Run 1 [length=14 bytes] ------
COMETQ
HVNGAT
----------------------------

Your program printed data to stderr. Here is the data:
-------------------
Exception_in_thread_"main"_java.io.FileNotFoundException:_test.in_(No_such_file_or_directory)
at_java.io.FileInputStream.open(Native_Method)
at_java.io.FileInputStream.<init>(FileInputStream.java:106)
at_java.io.FileInputStream.<init>(FileInputStream.java:66)
at_java.io.FileReader.<init>(FileReader.java:41)
at_ride.main(Unknown_Source)

我试着看这个 http://cerberus.delos.com:790/usacoprobfix?a=VjAAvKvQucH ,但我无法真正理解诸如“堆栈使用”或“越界”之类的术语。

它不接受我的代码的原因是因为它太慢了吗?如果能帮我解决这个问题,我将不胜感激。

  /*
ID: Anon
LANG: JAVA
TASK: ride
*/
import java.io.*;
import java.util.*;

class ride
{
public static void main (String [] args) throws IOException
{

//input
BufferedReader br = new BufferedReader(new FileReader("test.in"));

//output
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));

String nameComet = br.readLine();
String nameGroup = br.readLine();

int productComet = 1;
int productGroup = 1;

//loop through each letter in word
for(int i=0; i<nameComet.length(); i++)
{
//sets letter to char letter
char letter = nameComet.charAt(i);
//set number of letter to correspondnum
int numComet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(letter) + 1;
productComet *= numComet;
}

for(int i=0; i<nameGroup.length(); i++)
{
//sets letter to char letter
char letter = nameGroup.charAt(i);
//set number of letter to correspondnum
int numGroup = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(letter) + 1;
productGroup *= numGroup;
}

int modComet = productComet % 47;
int modGroup = productGroup % 47;

if (modComet == modGroup)
{
out.println("GO");
}
else
{
out.println("STAY");
}

//close everything
out.close();
System.exit(0);
}
}

最佳答案

你的错误在这些行上:

BufferedReader br = new BufferedReader(new FileReader("test.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));

您的代码正试图从 usaco 服务器上不存在的文件(“test.in”)中读取。当您向网站提交代码时,您需要读取与问题同名的文件(例如“ride.in”和“ride.out”)。

希望对您有所帮助!

关于java - 如何使代码更高效/更干净 - USACO 培训的首要任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18776567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com