2014-03-06 49 views
0

我正在为介绍CS的一个学校项目工作,我不能发布我的代码,因为我们的老师让我们从StackOverflow检查代码失败。我的问题是,在我的代码的格式:虽然循环不等待如果语句的完成

while (condition){ 
Do something; 

if (new condition){ 
Do something else; 
Wait for input; 
Depending on input make while's condition false; 
} 

此代码应等待输入时if语句进行评估,它别的东西。但是,我的代码不会等待“等待输入”步骤并直接进入“执行某些”步骤。这是一些代码。感谢您的帮助。

while (inum != 102) { 
System.out.println("Enter a number between 1 and 100: "); 
inum = input.nextInt(); 
else if (inum == 101) { 
       System.out.println("Are you sure you want to quit?"); 
       confirm = input.nextLine(); 
       if (confirm == "yes") { 
        inum = 102; 
       } 
} 

下面的代码给了我这个当我在101型: 你确定要退出? 输入1和100之间的数字:

*代码不等待

confirm = input.nextLine(); 
       if (confirm == "yes") { 
        inum = 102; 
       } 

步骤。

+1

@SotiriosDelimanolis等 - 如果代码 – nachokk

+0

中未显示任何先前的“if”最常问到的问题在SO上,它似乎...如果(确认==“是”)'用'if(“yes”.equals(confirm))替换' – fge

+0

我改变后仍然得到相同的响应(“yes”.equals (确认)) – user3389265

回答

2

为您解决问题最简单的方法是调用

input.nextLine(); 
略低于

inum = input.nextInt(); 

的原因是:当你在控制台输入“101”,你真的键入101新队。 nextInt()从控制台缓冲区中获取101,但NEWLINE字符保留。因此,代码中的第二个下一行()会被跳过(代码假设你输入了一个新的空行)

+0

正确答案。 – user3389265

0

定义的其他输入扫描仪和不使用相同的两个字符串和int 试试这个代码(我把System.exist(0),所以当你输入yes程序退出)

import java.util.Scanner; 

public class Test { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    int inum = 0; 
    Scanner input = new Scanner(System.in); 
    Scanner input1 = new Scanner(System.in); 
    while (inum != 102) { 
     System.out.println("Enter a number between 1 and 100: "); 
     inum = input.nextInt(); 
     if (inum == 101) { 
      System.out.println("Are you sure you want to quit?"); 
      String confirm = input1.nextLine(); 
      if (confirm.equalsIgnoreCase("yes")) { 
       inum = 102; 
       System.exit(0); 
      } 
     } 

    } 
} 
+0

'confirm ==“yes”'不起作用。 – Makoto

+0

为什么-1我只是忘记把confirm.equalsIgnoreCase(“是”) – esprittn

+0

提醒你,你的回答没有帮助。似乎它的工作。 – Makoto

0
if(StringUtils.equals(confirm, "yes")) { ... 
1
  1. 您应该使用confirm.equals(“yes”)。
  2. 输入已用于输入数字并声明另一个扫描仪对象输入确认字符串。
+0

为什么两台扫描仪? – Rembo