java - 使用用户输入结束do-while循环

时间:2017-03-06 06:04:09

标签: java loops oop while-loop do-while

在我做对了之前,这会让我感到烦恼。

我目前正在攻读我的第二个OOP课程,除了我们这次使用的是Java。一切都有效,除了循环外。输入姓名,年龄,体重,身高(分别为英尺和英寸),并输出您所属类别的BMI(体重不足,正常,超重,肥胖)。

对于此作业,我们应该使用循环输入尽可能多的名称,直到输入“X”退出。

请查看我的代码并告诉我需要做些什么来完成这项工作。我甚至尝试了一个while循环,但是没有用。

server <- function(input, output) {
  inFile <- reactive({input$file1})

  x <- reactive({input$good})
  y <- reactive({input$ok})
  z <- reactive({input$bad})
  observe({
    if(!is.null(inFile())){
      result <- reactive({
        input$update
        withProgress({
          setProgress(message = "Processing review...")
          create_rating(as.String(path), x(), y(), z())
        })
      })
      output$result_shiny <- renderTable({result()})  
    }

  })

}

3 个答案:

答案 0 :(得分:0)

问题是do body会运行整个,直到你达到状态,它将失去循环。

您必须在用户输入后检查名称是否为“X”,如果是,请退出循环中断。

do {
// Enter name System.out.print("Enter name or X to quit: ");
u_name = input.nextLine();
if (u_name.equals("X")) break;

} while (true);

编辑:我也忘了提到你不应该使用等号运算符(==!=),而是使用equals()方法。

答案 1 :(得分:0)

在Java中,String类的工作方式略有不同。为了比较字符串,不会覆盖'=='运算符。

String a="abcd";
String b="abcd";
System.out.println(a==b) // gives false

默认情况下,Java会比较两个变量的内存地址而不是值。

要比较该值,您可以使用equals函数。

因此,正确的循环条件将是

 u_name.equals("X");

这将比较存储在两个字符串中的值。

此外,由于您使用Camel Case作为函数名称,因此对变量名称也应考虑相同。

答案 2 :(得分:0)

请替换此行

while (u_name != "X");

while (!"X".equals(u_name));

与java中的字符串比较不适用于=符号