我在以下作业中遇到了问题:
“编写一个程序,以月-日-年(8 23 2000)的形式接受任意两个日期,用空格分隔,并计算两个日期之间经过的总天数,包括开始日期和结束日期。请记住,闰年是可以被4整除的年份,但百年除外,百年必须可以被400整除,例如1600或2000(1800不是闰年)。您可以使用任何键入的日期(或存储在文件中的日期)测试程序,但它最终必须使用以下数据运行。屏幕上的系统输出可接受。"
到目前为止,我有这段代码,它可以编译:
import java.util.Scanner;
import java.io.*;
public class Project3
{
public static void main(String[] args) throws IOException
{
int m1, d1, y1, m2, d2, y2;
Scanner scan = new Scanner(new FileReader("dates.txt"));
for(int i = 0 ; i < 6; ++i)
{
m1 = scan.nextInt();
d1 = scan.nextInt();
y1 = scan.nextInt();
m2 = scan.nextInt();
d2 = scan.nextInt();
y2 = scan.nextInt();
System.out.println("The total number of days between the dates you entered are: " + x(m1, m2, d1, d2, y1, y2));
}
}
public static int x (int m1, int d1, int y1, int m2, int d2, int y2)
{
int total = 0;
int total1 = 0;
int total2 = 0;
if( m1 == m2 && y1 == y2)
{
total = d2 - d1 +1;
}
else if ( y1 == y2 )
{
total = daysInMonth( m2 , y2 ) - d1 + 1;
}
for(int i = m1; i < m2 ; ++i)
{
total1 += daysInMonth( m2, y2 );
}
for (int i = y1; i < y2; i++)
{
total2 += daysInYear ( y2 );
}
total += total1 + total2;
return total;
}
//Methods
public static boolean isLeap(int yr)
{
if(yr % 400 == 0)
return true;
else if (yr % 4 == 0 && yr % 100 !=0)
return true;
else return false;
}
public static int daysInMonth( int month , int year)
{
int leapMonth;
if (isLeap(year) == true)
{
leapMonth = 29;
}
else
{
leapMonth = 28;
}
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11: return 30;
case 2: return leapMonth;
}
return 28;
}
public static int daysInYear(int year)
{
if (isLeap(year))
return 366;
else
return 365;
}
}
我遇到的问题是数据文件中的日期输出不正确。我输入这两个日期< code>7 4 1776和< code>1 1 1987,得到的是< code>723795,而不是正确答案< code>76882。我输入的任何其他日期也不正确。
这也是我得到的错误。
您输入的日期之间的总天数为:723795
线程“main”Java . util . nosuchelementexception < br > at Java . util . scanner . throw for(scanner . Java:862)< br > at Java . util . scanner . next(scanner . Java:1485)< br > at Java . util . scanner . nextint(scanner . Java:2117)< br > at Java . util . scanner . nextint(scanner . Java:2076)
数据文件:
7
4
1776
1
1
1987
请,任何帮助,非常感谢!
首先,当您调用函数x时,您以错误的顺序传递参数。该函数被声明为x(m1, d1,y1,m2,d2,y2),但您正在调用x(m1,m2,d1,d2,y1,y2)。这很难找到。:)
另外,我已经根据你的原始代码清理了代码。请注意,您需要在循环中使用变量“I ”,而不是“y1”或“m2”
例如
for(int i = m1; i < m2 ; ++i)
{
total1 += daysInMonth( m2, y2 );
}
这段代码没有任何意义。您想使用daysInMonth(i, y2);
以下是我的建议:
public static void main(String[] args) throws IOException
{
int m1, d1, y1, m2, d2, y2;
Scanner scan = new Scanner(new FileReader("dates.txt"));
for(int i = 0 ; i < 6; ++i)
{
m1 = scan.nextInt();
d1 = scan.nextInt();
y1 = scan.nextInt();
m2 = scan.nextInt();
d2 = scan.nextInt();
y2 = scan.nextInt();
System.out.println("The total number of days between the dates you entered are: " + x(m1, d1, y1, m2, d2, y2));
}
}
public static int x (int m1, int d1, int y1, int m2, int d2, int y2) {
int total = 0;
total = d2 - d1 + 1;
if (y1 == y2) {
for(int i = m1; i < m2 ; ++i) {
total += daysInMonth(i, y2);
}
} else {
for (int i = m1; i <= 12; i++) {
total += daysInMonth(i, y1);
}
for (int i = y1+1; i < y2; i++) {
total += daysInYear(i);
}
for (int i = 1; i < m2 ; i++) {
total += daysInMonth(i, y2);
}
}
return total;
}
结果是:
java Project3
The total number of days between the dates you entered are: 76882
以下是整个代码:
import java.util.Scanner;
import java.io.*;
public class Project3
{
public static void main(String[] args) throws IOException
{
int m1, d1, y1, m2, d2, y2;
Scanner scan = new Scanner(new FileReader("dates.txt"));
for(int i = 0 ; i < 6; ++i)
{
m1 = scan.nextInt();
d1 = scan.nextInt();
y1 = scan.nextInt();
m2 = scan.nextInt();
d2 = scan.nextInt();
y2 = scan.nextInt();
System.out.println("The total number of days between the dates you entered are: " + x(m1, d1, y1, m2, d2, y2));
}
}
public static int x (int m1, int d1, int y1, int m2, int d2, int y2) {
int total = 0;
total = d2 - d1 + 1;
if (y1 == y2) {
for(int i = m1; i < m2 ; ++i) {
total += daysInMonth(i, y2);
}
} else {
for (int i = m1; i <= 12; i++) {
total += daysInMonth(i, y1);
}
for (int i = y1+1; i < y2; i++) {
total += daysInYear(i);
}
for (int i = 1; i < m2 ; i++) {
total += daysInMonth(i, y2);
}
}
return total;
}
//Methods
public static boolean isLeap(int yr)
{
if(yr % 400 == 0)
return true;
else if (yr % 4 == 0 && yr % 100 !=0)
return true;
else return false;
}
public static int daysInMonth( int month , int year)
{
int leapMonth;
if (isLeap(year) == true)
{
leapMonth = 29;
}
else
{
leapMonth = 28;
}
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11: return 30;
case 2: return leapMonth;
}
return 28;
}
public static int daysInYear(int year)
{
if (isLeap(year))
return 366;
else
return 365;
}
}
问题内容: 每当我运行此命令时,该函数就可以正常使用。当我选择洞穴时,消息会每隔2秒弹出一次,然后当它越过该部分时,就会出现错误: 我已经尝试过和,并且在该方法中使用时,出现了很多错误。当我在方法中使用时,它不接受我的输入。 当我在该方法中使用时,它不接受我的字符串输入,而直接进入另一个游戏,但是布尔值返回并且它无限地发送垃圾邮件“ Which Cave …”。 我已经阅读了错误报告,以及类似问题
问题内容: 我正在开发一个访问数据库的项目,但是我遇到了一些问题。我尝试使用hibernate3.2和4.52,但是它不起作用。 例外是在这行代码中 问题答案: 您需要在类路径中检查类org.apache.log4j.Level的冲突版本并进行解决。版本1.2.12或更高版本的log4j jar中提供了TRACE级别。
我最近安装了intellij IDEA 14.0,为了确保一切正常,我创建了一个简单的Hello World程序。我不明白为什么输出不正确,为什么会出现这个错误。如果有人能帮忙,那就太好了。 以下是程序: 这是错误:
问题内容: 当我运行程序进行智能卡读取时,会出现此异常。我的设备未连接。请帮我。 问题答案: 这意味着它无法加载您需要的共享库。这可能是因为。 该库不在您的库路径中。 该库名称不正确,例如,Unix上LIBRARY必须为libLIBRARY.so。 您无法执行该库。 该库不适用于操作系统或JVM的位大小。例如64位JVM将不会加载32位库。 您的JRE未正确安装,并且无法加载其自己的库之一。 您正
我不断收到错误消息: 线程“main”java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)在java.lang.Integer.ParseInt(Integer.java:580)在java.lang.Integer.ParseInt(Integer.java:615)在TestClass.Mai
运行代码后,我收到以下错误 线程 “main” java.time.format.DateTimeParseException 中的异常:文本 '03-09-1999' 无法在 java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2051) at java.base/java.time
最近我正在学习Spring框架。所以我正在尝试检查依赖注入在Spring框架中的工作原理。因此,我创建了一个新的java项目并使用基于构造函数XML的配置练习依赖注入代码。运行我的项目后,我收到了这个错误...... 类路径资源[com/mir00r/beans.XML]的XML文档中的第24行无效;嵌套异常为组织。xml。萨克斯。SAXParseException;行号:24;列数:9;cvc复
我正在学习selenium并尝试运行以下代码,但它引发了异常。NoSuchFieldError:空字节数组。请帮助我理解这个简单的程序出了什么问题。 控制台: 异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY