Java中的Goto语句[关闭]

2024-04-03

我执行了下面的代码Eclipse http://en.wikipedia.org/wiki/Eclipse_%28software%29,但是GOTO其中的语句无效。我该如何使用它?

如何使用 Break 和Continue 语句重写上述代码而不使用 goto 语句?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 */

/**
 * @author Home
 *
 */
public class student
{
    /**
    * @param args
    */
    String average(float sub1,float sub2,float sub3)
    {
        float average = (sub1+sub2+sub3)/3;
        if( average > 50)
            return "PASS";
        else
            return "FAIL";
    }

    String addName(String name)
    {
        return name;
    }

    public static void main(String[] args) throws NumberFormatException, IOException
    {
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        student stu = new student();
        int loop_option = 0;
        do
        {
            System.out.println("--------------STUDENT DETAILS---------------");
            System.out.println("Choose the operation from the following options.");
            System.out.println(" 1.ADDNAME");
            System.out.println(" 2.AVERAGE_RESULT");
            System.out.println(" 3.EXIT");
            System.out.println("CHOOSE THE OPERATION U WANT:");

            int option = Integer.parseInt(br.readLine());
            switch(option)
            {
                case 1:
                    System.out.println("Enter the name");
                    String name = br.readLine();
                    System.out.println("The Inserted student name is " +stu.addName(name));
                break;

                case 2:
                    outsideloops:
                    System.out.println("Enter the marks (in 100):");
                    System.out.println("Subject 1:");
                    float sub1 = Float.parseFloat(br.readLine());
                    if (sub1 >= 101)
                        goto outsideloops;
                    System.out.println("Subject 2:");
                    float sub2=Float.parseFloat(br.readLine());
                    System.out.println("Subject 3:");
                    float sub3=Float.parseFloat(br.readLine());
                    System.out.println("The Student is "+stu.average(sub1,sub2,sub3)+ "in the examinations");
                    break;

                case 3:
                    System.exit(0);

                default:
                    System.out.println("Please choose the valid option");
                    //break;
            }
            System.out.println("if U want 2 use further press 1 to continue...");
           loop_option=Integer.parseInt(br.readLine());
        }
        while (loop_option == 1);
        System.out.println("The STUDENT program is terminating now.");
    }
}

根据 Stack Overflow 成员之一的建议,我编写了以下代码:但这也是错误的。我在想为什么要删除 Java 中的 GOTO 语句?

这也行不通。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    String average(float sub1,float sub2,float sub3)
    {
        float average=(sub1+sub2+sub3)/3;
        if( average>50)
            return "PASS";
        else
            return "FAIL";
    }

    String addName(String name)
    {
        return name;
    }

    public static void main(String[] args) throws NumberFormatException, IOException {
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Main stu = new Main();

        float sub1 = 0;
        int goThere = 0;

        do {
            switch(goThere){
                case -1:
                    System.out.println("if U want 2 use further press 0 to continue...");
                    goThere = Integer.parseInt(br.readLine());
                    continue;

                case 0:
                    System.out.println("--------------STUDENT DETAILS---------------");
                    System.out.println("Choose the operation from the following options.");
                    System.out.println(" 1.ADDNAME");
                    System.out.println(" 2.AVERAGE_RESULT");
                    System.out.println(" 3.EXIT");
                    System.out.println("CHOOSE THE OPERATION U WANT:");

                    goThere = Integer.parseInt( br.readLine() );
                    continue;

                case 1:
                    System.out.println("Enter the name");
                    String name = br.readLine();
                    System.out.println("The Inserted student name is " + stu.addName(name));
                    goThere = -1;
                    continue;

                case 2:
                    System.out.println("Enter the marks (in 100):");
                    System.out.println("Subject 1:");
                    sub1 = Float.parseFloat(br.readLine());
                    goThere = 4;
                    continue;

                case 4:
                    {
                        if( sub1 >= 101)
                        {
                            goThere = 2;
                        }
                        else {goThere = 3;}
                    }
                    continue;

                case 3:
                    System.out.println("Subject 2:");
                    float sub2=Float.parseFloat(br.readLine());
                    goThere =5;
                    continue;

                case 5:
                    {
                        if( sub2 >= 101)
                        {
                            goThere = 3;
                        }
                        else {
                            goThere = 6;
                        }
                    }
                    continue;

                case 6:
                    System.out.println("Subject 3:");
                    float sub3 = Float.parseFloat(br.readLine());
                    goThere = 7;
                    continue;

                case 7:
                    {
                        if( sub3 >= 101)
                        {
                            goThere = 6;
                        }

                    }
                    continue;

                    System.out .println("The Student is " + stu.average(sub1,sub2,sub3) + "in the examinations");
                    goThere = -1;
                    continue;
            }
            break;
        } while(true);
    }
}

没有goto到目前为止,在 Java 中。这是一个保留词,以防万一最终需要它,但据我所知,他们还没有使用过它。

可能的等效代码:

case 2:
    float sub1 = 0.0;
    do {
        System.out.println("Enter the marks (in 100):");
        System.out.println("Subject 1:");
        sub1 = Float.parseFloat(br.readLne());
    } while (sub1 >= 101);

    ... rest of the code ...

请注意,此代码等效于这种特殊情况。没有通用的替代品goto;如果有的话,他们只会call it goto并完成它。每个案例都会有所不同,更换完全取决于goto会被使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的Goto语句[关闭] 的相关文章

随机推荐

  • 如何在 iOS 应用程序中获取后台运行的应用程序详细信息?

    我想开发一个应用程序 该应用程序应该监视在我的 I Phone 设备 包括互联网浏览器 上运行了多少应用程序 请分享您对这篇文章的想法 有点像这样 https itunes apple com us app system manager i
  • Richfaces 和 Primefaces 彼此兼容吗?

    我现在使用 Primefaces 2 1 我尝试将 Richfaces 3 3 3 集成到我的应用程序中以便使用
  • ListView 项目布局 targetSdkVersion="17" 和 targetSdkVersion="18" 之间不同

    我刚刚将 Android SDK 更新到版本 18 并修改了我正在处理的项目以使用它而不是版本 17 事实证明 我的 ListView 现在看起来有很大不同 然而 只需在清单文件中将 targetSdkVersion 从 18 切换到 17
  • https 客户端使用客户端证书和密码通过 cpp-netlib 获取

    我正在尝试使用 cppnetlib 甚至 boost asio 库来连接以执行简单的 url 获取并将结果页面拉下来 我已经让它可以与http一起使用 甚至可以使用https使用cppnetlib 但我需要提供一个需要密码的客户端证书 不幸
  • Git Bash 是否通过 ssh 密钥确定身份?

    已经第三天了 我仍然无法解决以下问题 我最初在 2 年前创建了一个 GitHub 帐户 我相信我为此帐户生成了 SSH 密钥 我相信我已将 ssh 密钥加载到我的 ssh agent 程序中 然后将公钥放在我的 GitHub 帐户上 现在我
  • 当 Html 输入范围“step”不是范围“max”值的倍数时

    我遇到的情况是 我的范围滑块的步长不是最大值的倍数 因此滑块值仅变为 90 因为下一步将大于 100 片段
  • Windows 上的 PHP realpath 案例问题

    我的 Windows 服务器上有一个符号链接 其制作方式如下 F gt mkdir link target F gt mklink D link f link target 注意小写f 在符号链接目标中 在 PHP 中我运行这个 dir r
  • PHP SOAP 请求全部小写

    我创建了一个 Web 服务并使用 SoapUI 来验证它是否正常工作 然而 PHP 客户端在尝试访问它时遇到致命错误 我设置了一个 try catch 以便可以查看输出 SOAP 请求并执行var dump 当我查看请求并var dump
  • Xcode 12.4 React Native 构建在 IOS 中失败显示所有消息命令 PhaseScriptExecution 失败并出现非零退出代码

    我是 React Native 的新手 我想在 React Native 初始化后在 IOS 中运行 React Native 应用程序 应用程序未在 IOS 中运行显示一些错误 显示所有消息 bash Native social logi
  • C# - 初始化器内类字段的闭包?

    考虑以下代码 using System namespace ConsoleApplication2 class Program static void Main string args var square new Square 4 Con
  • 怎么转?如何将多行转换为一行多列?

    我有两张表想要合并 第一张桌子是客户的 另一张桌子是产品的 目前我有 22 个产品 但我想要一个灵活的数据库设计 因此产品数据库中不是有 22 列 而是每个客户的每个产品有 1 行 因此如果我总体添加或删除 1 个产品 我不会必须更改数据库
  • PHP:使用方法作为回调

    我试图使用array walk recursive对于某些事情 并想使用类的方法之一作为回调 所以尝试 array walk recursive TAINTED this gt encode 及其变体都失败了 我最终决定 array wal
  • 如何在 main() 之前调试程序崩溃

    我在 Windows 8 1 上使用 QtCreator 和 Visual Studio 2015 套件来构建我在 Linux 上开发和测试的程序 在 Linux 上它工作正常 但在 Windows 上它立即崩溃 我不知道要寻找什么 除了我
  • .htaccess 中单个 RewriteCond 的多个 RewriteRules

    我的 htaccess 中有以下命令 RewriteCond HTTP HOST www a z0 9 example com NC RewriteRule a z 2 1 2 L RewriteRule 0 9 a z 2 1 3 2 L
  • pieCSS3:不在本地四舍五入

    我正在尝试使用饼图获得圆角 ul li webkit border radius 8px 8px 0 0 moz border radius 8px 8px 0 0 border radius 8px 8px 0 0 color FFFFF
  • 从 API 控制器调用 POST 方法

    我有一个名为 MyFIlesController 的 API 控制器 在其中 我有这个方法 POST api myfiles public void Post FromBody string value 以下是我用 Fiddler 的调用方
  • 有没有java图像库?

    我是 java 图像处理新手 我的任务是重新调整网站图像的大小和比例 有没有一个简单的库可以完成这项任务 一个我必须下载 jar 的库 添加到我的项目中 我不喜欢被迫在 Windows 上安装编解码器和文件 我需要该库仅支持基本功能 Lib
  • Visual Studio 在断点处冻结

    自一周前以来 我在 VS2010 中看到了一个非常烦人的行为 当我正在调试一个项目时 调试器在断点处停止 Windows 冻结了近十秒 我说 Windows死机 是因为这段时间鼠标和键盘没用 该问题仅在我调试特定项目时发生 并且我在两台不同
  • 使用 Java 在 Mac 上以编程方式发送电子邮件(通过 Mac 邮件客户端)

    我对这个问题做了很多研究 但似乎无法为我的问题提出可靠的解决方案 我正在开发一个 Java 客户端应用程序 它 应该 允许用户从 Mac 地址簿中导入联系人 方法是以列表格式获取联系人 并允许用户选择一个子集 全部 然后单击一个按钮 将 邀
  • Java中的Goto语句[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我执行了下面的代码Eclipse http en wikipedia org wiki Eclipse 28software 29 但是GO