JAVA花括号

JAVA花括号,java,braces,Java,Braces,收到花括号上的语法错误,但无论我关闭多少,它仍然会给出一个错误。我想不出来。谢谢你在这方面的任何建议,我真是不知所措。我尝试了添加更多和删除更多。我已经计算了需要关闭的数量,但仍然出现错误 import java.util.Scanner; public class Paint1 { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); doubl

收到花括号上的语法错误,但无论我关闭多少,它仍然会给出一个错误。我想不出来。谢谢你在这方面的任何建议,我真是不知所措。我尝试了添加更多和删除更多。我已经计算了需要关闭的数量,但仍然出现错误

import java.util.Scanner;

public class Paint1 {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        double wallHeight = 0.0;
        double wallWidth = 0.0;
        double wallArea = 0.0;
        double gallonsPaintNeeded = 0.0;
        
        final double squareFeetPerGallons = 350.0;
        
        // Implement a do-while loop to ensure input is valid
        // Prompt user to input wall's height
        do {
            
        System.out.println("Enter wall height (feet): ");
        wallHeight = scnr.nextDouble();
            while (!scnr.hasNextInt()) {
                System.out.printf("\"%s\" is not a valid number.\n");
                System.out.println("Please enter wall height in feet: ");
            } while (wallHeight < 0) {
            
        
        // Implement a do-while loop to ensure input is valid
        // Prompt user to input wall's width
            do {
        System.out.println("Enter wall width (feet): ");
        wallWidth = scnr.nextDouble(); // changed wallHeight to wallWidth
        while (!scnr.hasNextDouble()) {
            System.out.printf("\"%s\" is not a valid number.\n");
            System.out.println("Please enter wall width in feet: ");
        } while (wallWidth < 0) {
        
        
            
        
        // Calculate and output wall area
        wallArea = wallHeight * wallWidth;
        System.out.println("Wall area: " + wallArea + " square feet"); // added variable

        // Calculate and output the amount of paint (in gallons) needed to paint the wall
        gallonsPaintNeeded = wallArea/squareFeetPerGallons;
        System.out.println("Paint needed: " + gallonsPaintNeeded + " gallons"); // changed variable to correct case
        
            }
}
        
import java.util.Scanner;
公共级油漆工1{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
双壁高度=0.0;
双壁宽=0.0;
双瓦莱拉=0.0;
需要两加仑的油漆=0.0;
最终双平方英尺Pergallons=350.0;
//实现do-while循环以确保输入有效
//提示用户输入墙的高度
做{
System.out.println(“输入墙高(英尺):”;
墙高=scnr.nextDouble();
而(!scnr.hasnetint()){
System.out.printf(“\%s\”不是有效数字。\n”);
System.out.println(“请以英尺为单位输入墙高:”;
}而(墙高<0){
//实现do-while循环以确保输入有效
//提示用户输入墙的宽度
做{
System.out.println(“输入墙宽(英尺):”;
wallWidth=scnr.nextDouble();//将wallHeight更改为wallWidth
而(!scnr.hasNextDouble()){
System.out.printf(“\%s\”不是有效数字。\n”);
System.out.println(“请以英尺为单位输入墙宽:”;
}而(壁宽<0){
//计算并输出墙面积
wallArea=墙高*墙宽;
System.out.println(“墙面积:+wallArea+“平方英尺”);//添加了变量
//计算并输出绘制墙所需的油漆量(加仑)
所需的加仑量=瓦拉/平方英尺/加仑;
System.out.println(“需要油漆:+gallonsPaintNeeded+“gallons”);//将变量更改为正确的大小写
}
}

您在
}while(wallWidth<0){
行中似乎有一个额外的大括号。您是否尝试删除该大括号?开始大括号很好,但行末尾的大括号可能会给您带来问题。

您尝试实现do while循环,但出现错误

import java.util.Scanner;

public class Paint1 {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        double wallHeight = 0.0;
        double wallWidth = 0.0;
        double wallArea = 0.0;
        double gallonsPaintNeeded = 0.0;
        
        final double squareFeetPerGallons = 350.0;
        
        // Implement a do-while loop to ensure input is valid
        // Prompt user to input wall's height
        do {
            
        System.out.println("Enter wall height (feet): ");
        wallHeight = scnr.nextDouble();
            while (!scnr.hasNextInt()) {
                System.out.printf("\"%s\" is not a valid number.\n");
                System.out.println("Please enter wall height in feet: ");
            } while (wallHeight < 0) {
            
        
        // Implement a do-while loop to ensure input is valid
        // Prompt user to input wall's width
            do {
        System.out.println("Enter wall width (feet): ");
        wallWidth = scnr.nextDouble(); // changed wallHeight to wallWidth
        while (!scnr.hasNextDouble()) {
            System.out.printf("\"%s\" is not a valid number.\n");
            System.out.println("Please enter wall width in feet: ");
        } while (wallWidth < 0) {
        
        
            
        
        // Calculate and output wall area
        wallArea = wallHeight * wallWidth;
        System.out.println("Wall area: " + wallArea + " square feet"); // added variable

        // Calculate and output the amount of paint (in gallons) needed to paint the wall
        gallonsPaintNeeded = wallArea/squareFeetPerGallons;
        System.out.println("Paint needed: " + gallonsPaintNeeded + " gallons"); // changed variable to correct case
        
            }
}
        
你必须让它看起来像那样

do {
//something
//something
}while(condition);

您可以在此处阅读有关此循环的更多信息:

您的do while循环遇到了一些问题

第19行和第29行上的
do
从未关闭,并且在末尾缺少while子句。此外,还缺少4个大括号

public class Paint1 {

    public static void main(String[] args) {
        //...
        do {
            //...
            while (!scnr.hasNextInt()) {
                //..
            }
            while (wallHeight < 0) {
                // ..
                do {
                    // ..
                    while (!scnr.hasNextDouble()) {
                    }
                    while (wallWidth < 0) {
                    }
                } while (true); // Should have a clause, or will be an infinite loop
            }
        } while (true); // Should have a clause, or will be an infinite loop
    }
}
公共类1{
公共静态void main(字符串[]args){
//...
做{
//...
而(!scnr.hasnetint()){
//..
}
而(墙高<0){
// ..
做{
// ..
而(!scnr.hasNextDouble()){
}
而(壁宽<0){
}
}while(true);//应该有一个子句,否则将是一个无限循环
}
}while(true);//应该有一个子句,否则将是一个无限循环
}
}

你的编译器应该给你一个提示,告诉你它在哪里丢失了。你有一个
do{…
,它需要以
}while(条件);
结束。因此
{
之后的
while(墙宽<0)
是不允许的。您是否打算在Do while之后立即使用新循环?您应该编辑您的问题,将确切的错误作为文本包含在内。