我可以更改什么才能使此代码正常工作?

时间:2013-09-24 22:56:26

标签: java variables next missing-data

在我发布我正在编写的程序的alpha版本之前,我正处于测试的最后阶段。这可能是一个愚蠢的问题,但我似乎无法弄明白。我理解drjava告诉我的是,我错过了一个变量,但我也不明白,因为我从来没有在#34;()"的名称下创建变量。我甚至不确定你可以将任何类型的变量设置为开合括号。无论如何,我正在测试,虽然它有效,但它并不是我想要的方式。我进入扫描仪"先生。 B"当然没有引号。该程序没有打印B.我认为它可能是Mr.和B之间的空间,因为带空格的其他输入也是如此。知道代码中存在GIANT故障,我无法发布我的程序版本。我想知道为什么,我试图通过更改ownersname.next()来修复它;到ownername.nextLine和ownersname.next以及ownersname.nextScanner和ownername.nextScanner。这是错误发生的地方,它说它无法找到变量,直到我将其更改回原来的代码,如下所示。

Scanner ownersname = new Scanner(System.in);
   String sownersname = ownersname.next();
   System.out.println(sownersname + "? That is a nice name.");

1 个答案:

答案 0 :(得分:2)

  

在我发布我正在编写的程序的alpha版本之前,我正处于测试的最后阶段。

您正在创建专业应用程序?请告诉我们更多相关信息。


  

我理解drjava告诉我的是,我错过了一个变量,但我也不明白,因为我从未在名称“()”下创建变量。我甚至不确定你可以将任何类型的变量设置为开合括号。

在此处发布问题时,如果您收到编译器的错误消息,请将您的问题发布到整个错误消息中。不要解释它。并通过代码中的明显注释来表示,即发生错误的// ****** error here *****


  

无论如何我正在测试,虽然它有效,但它并不是我想要的方式。我进入了扫描仪“B先生”。当然没有引号。该程序没有打印B.我认为它可能是Mr.和B之间的空间,因为其他带有空格的输入也是如此。

不要使用仅获得下一个标记的Scanner#next() - 在到达空格之前的下一个单词(此处为Mr.),并且不会获得该行的其余文本。而是使用Scanner#nextLine()来获取整条线。

例如:

Scanner ownersname = new Scanner(System.in);
// String sownersname = ownersname.next(); // *** not this ***
String sownersname = ownersname.nextLine(); // *** but rather this ***
System.out.println(sownersname + "? That is a nice name.");

  

我知道代码中存在GIANT故障,我无法发布我的程序版本。

说真的,你正在创建一个专业的应用程序?我还没到那个阶段,这就是我要问的原因。


  

我想知道为什么,我试图通过更改ownersname.next()修复它;到ownername.nextLine和ownersname.next以及ownersname.nextScanner和ownername.nextScanner。这是错误的来源,当它说它找不到变量,直到我把它改回原来的代码,这是在下面。

我很想看到你的nextLine()方法尝试,因为这是解决方案。也许你试图在不使用方法括号的情况下调用该方法。

我还假设您熟悉Java API并查找了Scanner条目。如果你这样做了,你会马上看到这个类没有nextScanner()方法。这是我不得不怀疑你在舞台上制作专业应用程序的原因之一。再一次,我不觉得我还没有创造一个,所以请不要把它当作侮辱,只是好奇心。