在我做对了之前,这会让我感到烦恼。
我目前正在攻读我的第二个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()})
}
})
}
答案 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中的字符串比较不适用于=
符号