我正在制作一个非常简单的程序,主要是为了学习if/else
语句。该程序是为了确定您是否选择了正确的日期。
该计划的目的是:
问题是,如果您在月份部分中键入示例15,则说明
MonthWrongWrongdayinthemonthWrongdayinthemonth
而不仅仅是
月错
这是因为我在其他if/else
语句中有if/else
个语句吗?我试过在各处寻找这个,但我无法弄清楚出了什么问题。
当我尝试运行应用程序时,这是指向控制台图片的链接。
请原谅瑞典语。
import java.util.Scanner;
public class DateChecker111 {
public static void main (String args[]) {
Scanner scanner1 = new Scanner(System.in);
int Manad, Dag;
System.out.print("Ange Månad>");
Manad = scanner1.nextInt();
if (Manad > 0 && Manad < 13) {
}
else {
System.out.print("Felaktig Månad");
}
if (Manad == 1 || Manad == 3 || Manad == 5 || Manad == 7 || Manad == 8 || Manad == 10 || Manad == 12) {
System.out.print("Ange Dag>");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 32);
System.out.print("Korrekt Datum");
}
else {
System.out.print("Felaktig Dag i Månaden");
}
if (Manad == 2) {
System.out.print("Ange Dag");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 29);
System.out.print("Korrekt Datum");
}
else {
System.out.print("Felaktig Dag i Månaden");
}
if (Manad == 4 || Manad == 6 || Manad == 9 || Manad == 11) {
System.out.println("Ange Dag");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 31);
System.out.print("Korrekt Datum");
}
else {
System.out.print("Felaktig Dag i Månaden");
scanner1.close();
}
}
}
答案 0 :(得分:2)
这里的真正问题以及所有问题的根源在于,您始终以分号结束if
语句。例如,你写:
if (Dag > 0 && Dag < 32);
System.out.print("Korrekt Datum");
这相当于完全没有if
声明!
if
语句具有以下形式:
if (condition)
statement
并且if-else
语句具有以下形式:
if (condition)
statement
else
anotherStatement
请注意,我遗漏了分号和大括号。这是故意的。在这两种形式中,statement
和anotherStatement
可以是以分号结尾的单个语句,也可以是由大括号中的Block
个statements
组成的if
。因此,当您以分号结束if (condition)
;
语句时,您实际上正在编写
if (Dag > 0 && Dag < 32)
;
System.out.print("Korrekt Datum");
在上面引用的示例代码中,您正在编写
jQuery(document).ready(function(){
jQuery('.ttip').hover(
function() {
var offset = jQuery(this).offset();
console.log(offset)
var width = jQuery(this).outerWidth();
var tooltipId = jQuery(this).attr("rel");
jQuery('#tooltip-container').empty().load('tooltips.html' + tooltipId).stop(true).fadeIn(500);
jQuery('#tooltip-container').css({top:offset.top, left:offset.left + width + 10}).show();
},
function() {
jQuery('#tooltip-container').stop(true).fadeOut(500);
});
});
取出额外的分号,你的生活会更快乐。
答案 1 :(得分:1)
由于if / else的一个分支已被执行,因此该名称的执行流程不会停止,它将继续执行第二个if / else,其结果也将被输出。
答案 2 :(得分:1)
无论第一个if语句是否成功,都会执行第二个if语句。要解决此问题,您可以添加
return;
之后
System.out.println("Felaktig Manad");
另外,要小心分号(;)。在多种情况下,你在if语句之后立即使用分号,这导致if语句根本不执行任何操作(它基本上被完全跳过)。用右括号(})替换那些分号。 根据您的IDE,您可以点击crtl + I,因此它会自动缩进代码,您可以清楚地看到它的作用。
答案 3 :(得分:1)
以下是您的代码格式更好,以便您可以看到您所犯的错误。有3个<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:id="3">
<teiHeader>
<title>Letter 3</title>
<date when="18880101" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 3</p>
</text>
</TEI>
语句以<?xml version="1.0" encoding="UTF-8"?>
<CORRESPONDENCE>
<TEI xml:id="3">
<teiHeader>
<title>Letter 3</title>
<date when="18880101" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 3</p>
</text>
</TEI>
<TEI xml:id="1">
<teiHeader>
<title>Letter 1</title>
<date when="19990202" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 1</p>
</text>
</TEI>
<TEI xml:id="2">
<teiHeader>
<title>Letter 1</title>
<date when="20010202" n="0"></date>
</teiHeader>
<text>
<p>Content of letter 2</p>
</text>
</TEI>
</CORRESPONDENCE>
结尾,而不是您想要的if
。使用现在格式化的代码,您应该注意到,除了一堆嵌套的;
语句之外,您还有几个{
语句将全部运行,即使第一个语句失败也是如此。这就是你所看到的。要解决此问题,请移除if
语句末尾的if
,然后添加;
。 (我用if
)标记了错误的ifs
{
答案 4 :(得分:0)
您的大括号出现问题,请参阅以下代码: 如果
(Manad == 1 || Manad == 3 || Manad == 5 || Manad == 7 || Manad == 8 || Manad == 10 || Manad == 12) {
System.out.print("Ange Dag>");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 32);
System.out.print("Korrekt Datum");
}
else {
System.out.print("Felaktig Dag i Månaden");
}
你的第一个右大括号}
实际上关闭了主要的if。代码可以看作:
if (Manad == 1 || Manad == 3 || Manad == 5 || Manad == 7 || Manad == 8 || Manad == 10 || Manad == 12) {
System.out.print("Ange Dag>");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 32);
System.out.print("Korrekt Datum");
}
else {
System.out.print("Felaktig Dag i Månaden");
}
答案 5 :(得分:0)
在此行中用括号替换分号:
diff
答案 6 :(得分:0)
你是Gavin说,执行不会因为你输入一个else语句而停止,它会继续从那一点开始。 如果你希望它能像你期望的那样工作,你或者只要在if-block中if-statement为true时引入应该运行的代码,或者引入一个return语句。
if(foo == 1) {
if(bar == 2 {
//Do something
}
else {
//bar is not 2
}
}
else {
//foo is not 1
}
或
if(foo == 1) {
}
else {
//foo is not 1
return;
}
if(bar == 2 {
//Do something
}
else {
//bar is not 2
return;
}
答案 7 :(得分:0)
你需要将你的if(Manad == 2)放在属于if的else语句中(Manad == 1 .....还要把if(Manad == 4 ....在else中)声明(Manad == 2)。我做了一些评论并删除了一些括号。
Scanner scanner1 = new Scanner(System.in);
int Manad, Dag;
System.out.print("Ange Månad>");
Manad = scanner1.nextInt();
if (Manad > 0 && Manad < 13) {
// you're not doing something here
}
else {
System.out.print("Felaktig Månad");
}
if (Manad == 1 || Manad == 3 || Manad == 5 || Manad == 7 || Manad == 8 || Manad == 10 || Manad == 12) {
System.out.print("Ange Dag>");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 32) {
System.out.print("Korrekt Datum");
}
}
else { // called if Manad != 1,3,5,7,8,10, or 12
System.out.print("Felaktig Dag i Månaden");
}
if (Manad == 2) { // you may wanna put this if else statement inside the previous else
System.out.print("Ange Dag");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 29) {
System.out.print("Korrekt Datum");
}
}
else { // for now, this is called every time Mannad != 2
System.out.print("Felaktig Dag i Månaden");
}
if (Manad == 4 || Manad == 6 || Manad == 9 || Manad == 11) {
// put this if else statement inside else that belongs to Manad == 2
System.out.println("Ange Dag");
Dag = scanner1.nextInt();
if (Dag > 0 && Dag < 31) {
System.out.print("Korrekt Datum");
}
}
else {// for now, this is called every time Manad != 4,6,9, or 11
System.out.print("Felaktig Dag i Månaden");
scanner1.close();
}