java.util.Scanner此处不允许对象声明

时间:2016-04-16 17:57:39

标签: java variables java.util.scanner declaration

我必须在不同的范围内使用Scanner对象,如下所示:

public String fidentifier (String u)
{
    try {
        Scanner t = new Scanner( new File( "ubasic.dat") );
        //Some Statements
    } catch( FileNotFoundException e ){
            System.out.println( "Exception : " + e );
    }
}

public String didentifier(String cat)
{
    try {
        if( cat.equals("Government") )
                Scanner s = new Scanner( new File("ugov.dat") );
        else
              Scanner s = new Scanner( new File("uhc.dat") );
        //Some Statements
    } catch( FileNotFoundException e ) {
            System.out.println( "Exception : " + e );
    }
}

由于我在两种不同的方法中清楚地声明了Scanner对象,我仍然收到错误,指出方法didentifier()中不允许使用Scanner对象声明。

指出我错在哪里。

2 个答案:

答案 0 :(得分:1)

您可以根据需要使用和声明尽可能多的扫描仪......(这是一种不好的做法,但对此没有技术限制......)

  

... 指出我错误的地方 ....

错误是: 扫描程序无法解析为变量 出错的原因是您尝试在if else范围内声明对象,但没有使用花括号 {}

替换方法中的代码:

if (cat.equals("Government")) {
    Scanner s = new Scanner(new File("ugov.dat"));
} else {
    Scanner s = new Scanner(new File("uhc.dat"));
    // Some Statements
}

一切都会正常......

最后,您可以拥有一个全局Scanner对象,您只需更改对象的引用即可。

public String didentifier(String cat)
{
    try
    {
        if( cat.equals("Government") )
              s = new Scanner( new File("ugov.dat") );
        else
              s = new Scanner( new File("uhc.dat") );
        //Some Statements
    }catch( FileNotFoundException e ) {
            System.out.println( "Exception : " + e );
    }
//your Return here...
}

enter image description here

答案 1 :(得分:0)

String file; if( cat.equals("Government") ) file = "ugov.dat"; else file = "uhc.dat"; Scanner s = new Scanner( new File(file) ); 之后的声明拥有自己的范围。声明一个在下一行不存在的变量是没有意义的,因为它超出了范围。最简单的方法是使用变量或?:

Scanner s = new Scanner( new File(cat.equals("Government") ? "ugov.dat": "uhc.dat" ) );

'use strict';
var express = require('express');
var stormpath = require('express-stormpath');

var routes = require('./lib/routes');

/**
* Create the Express application.
 */
var app = express();

/**
* Application settings.
 */
app.set('trust proxy',true);
app.set('view engine', 'jade');
app.set('views', './lib/views');
app.locals.siteName = 'Express-Stormpath Example Project';

/**
 * Stormpath initialization.
 */

console.log('Initializing Stormpath');

app.use(stormpath.init(app, {
expand: {
customData: true