怎样让java代码正确结束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样让java代码正确结束相关的知识,希望对你有一定的参考价值。

参考技术A

原因:

分析已达到文件结尾一般是括号没有闭合,或者缺少了分号

解决方案:

手工查看括号闭合情况

使用带自动对齐功能的编辑器如eclipse,notepad++

建议平时编程时多注意积累错误经验,语法错误不应当耗费太多时间

拓展资料:

Java的组成:

    Java编程语言

    Java类文件格式

    Java虚拟机

    Java应用程序接口

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类   ,通过调用类(这些类实现了Java API)中的方法来访问资源系统,

把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用

参考资料:百度百科_Java

如何让返回等待 MySQL 连接结束?节点.js

【中文标题】如何让返回等待 MySQL 连接结束?节点.js【英文标题】:How to make return wait for MySQL connection to end? Node.js 【发布时间】:2021-07-24 20:14:50 【问题描述】:

我是 Node.js 的新手,我正在 Wix 上测试一些代码来检查我的数据库是否在允许创建新帐户名称之前已经存在(我故意不使用 WHERE 标记用于学习目的的时刻)。

当前方法检查帐户名称在连接完成之前返回,不允许正确进行检查。

任何帮助表示赞赏。

    export function tryToCreateAccount(login, password) 

    var mysql = require('mysql');

    var connection = mysql.createConnection(
        host: 'host',
        user: 'user',
        password: 'pass',
        database: 'db'
    );

    if(checkAccountName(login, connection))
    
        console.log("Name didn't exist.");
    
    else
    
        console.log("Name Existed.");
    


function checkAccountName(account_name, connection)

    var accountNameAvailable = true;

    connection.connect(function (err)
    
        if(err) throw err;
        connection.query("SELECT login FROM accounts", function (err, result)
        
            if (err) throw err;

            for(var i = 0; i < result.length ; i++)
            
                if(result[i].login == account_name)
                
                    console.log("Should of been false");
                    connection.end;
                    accountNameAvailable = false;
                
            

        );
        connection.end;
    );

    return accountNameAvailable;

【问题讨论】:

【参考方案1】:

我知道为什么它什么也没做,因为连接结束,下一个调用太晚了,而下一个在连接代码块内。

const mysql = require('mysql');
const connection = mysql.createConnection(
    host: 'host',
    user: 'user',
    password: 'pass',
    database: 'db'
);

export function tryToCreateAccount(login, password) 

    checkAccountName(login, connection, function(err, accountNameAvailable)
    
      if(err || !accountNameAvailable)
        console.log("Name didn't exist.");
      
      else
      
        console.log("Name Existed.");
      
   )


function checkAccountName(login, connection, next)

    var accountNameAvailable = false;

    connection.connect(function (err)
    
        if(err) next(err);
        connection.query("SELECT login FROM accounts", function (err, result)
            if (err) next(err);
            for(var i = 0; i < result.length ; i++)
            
                if(result[i].login == login)
                
                    accountNameAvailable = true;
                
            
            next(null, accountNameAvailable);
            connection.end();
        );
    );

【讨论】:

很高兴看到你想通了。我实际上无法测试我的代码,因为我不想花时间设置数据库:) 我提出了一个关于回调的新问题,因为出于某种原因向 tryToCreateAccount 添加回调会破坏它,也许您有一些见解? link【参考方案2】:

欢迎来到 Node.js(以及异步函数(和 Promises(和回调)的世界))

我以“回调”风格编写了此代码,但我强烈建议您研究 async/await 以了解此类内容,并了解“承诺”如何融入其中。

// to test, call tryToCreateAccount('login','pass',function(err,data)console.log(err,data));

const mysql = require('mysql');
const connection = mysql.createConnection(
    host: 'host',
    user: 'user',
    password: 'pass',
    database: 'db'
);
export function tryToCreateAccount(login, password, next) 

    checkAccountName(login, connection, function(err, accountNameAvailable)
      if(err || !accountNameAvailable)
        console.log("Name didn't exist.");
        next(err || 'Name didn't exist.')
      
      else
      
        console.log("Name Existed.");
        next(null, true)
      
   )


function checkAccountName(account_name, connection, next)

    var accountNameAvailable = false;

    connection.connect(function (err)
    
        if(err) next(err);
        connection.query("SELECT login FROM accounts", function (err, result)
            if (err) next(err);
            for(var i = 0; i < result.length ; i++)
            
                if(result[i].login == account_name)
                
                    console.log("Should of been false");
                    connection.end;
                    accountNameAvailable = true;
                
            
            connection.end();
            next(null, accountNameAvailable);
        );

    );

【讨论】:

感谢您的回复,我想我现在至少理解了这个回调,问题是现在什么也没发生。为简单起见,我在测试时从 tryToCreateAccount 中删除了回调,因为它目前不是必需的。当我运行时,我在控制台中什么也没有。我添加了一些 console.log 语句来查找它停止的位置。它进入try to create,然后进入checkAccountName,然后停止。如果我在 connection.connect 代码块中放置一条语句,它永远不会出现。没有错误被抛出。

以上是关于怎样让java代码正确结束的主要内容,如果未能解决你的问题,请参考以下文章

尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束

阿里巴巴Java开发手册正确学习姿势是怎样的?刷新代码规范认知

知识改变命运:java代码规范

用myeclipse,在jsp中写java代码,需要导包时不提示,必须手动导包,怎样才能让它提示并且自动导包

我拼接了一个sql,在数据库中sql语句可正确运行,但在java代码中报错,sql命令未正确结束。

JAVA如何判断输入结束