我必须在不同的范围内使用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对象声明。
指出我错在哪里。
答案 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...
}
答案 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