正如您所看到的,这是我正在处理的代码片段。我的问题是为什么我必须创建一个新的扫描仪才能输入?为什么我不能使用stdIn.nextLine();
代替?如果你能包含一些参考文献,我将非常感激。
import java.util.Scanner;
public class Week6{
public static void main(String[]args){
Horse horse1;
Horse horse2;
Horse horse3;
String name;
int age;
double height;
String color;
boolean pureBlood;
Scanner in = new Scanner(System.in);
horse1 = new Horse(); // creation of Horse1
horse2 = new Horse(); // creation of horse2
horse3 = new Horse(); // creation of horse3
System.out.print("Enter the name of Horse1: ");
name = in.nextLine();
horse1.setName(name); //setting name for horse1
System.out.println(horse1.getName());
} // end main
} // end class
答案 0 :(得分:4)
检查java.lang.System
,java.io.InputStream
和java.io.Scanner
的javadoc。
System.in
是InputStream
。因此,您可以使用InputStream
方法从中访问非常基本的数据。
当您创建新的Scanner
时,您将InputStream
包装在另一个类中,它提供了更高级/更舒适的方法,例如readLine
或nextLine
InputStream
的定义中没有。
如果它有助于可视化我的意思,请认为您的Scanner
变量可能有任何不同的名称,因此没有直接的关系。简而言之,您不是在创建“另一个”Scanner
,因为在您的代码中只有一个Scanner
实例(您创建的实例)。
答案 1 :(得分:3)
你不能使用stdIn,因为java既没有那个对象,也没有你创建过。
当您编写myString.nextline()
时,您正在调用对象myString(所有字符串都是对象,例如:String myString = new String(“Hello World!”)),但如果您调用stdIn它将显示错误。
我没有找到任何可以使用stdIn的java库,但是stdIn适用于PHP,Python和C,所以也许你因此而感到困惑。
答案 2 :(得分:1)
我们正在使用Scanner类从user获取输入。我们首先创建一个Scanner类的对象,然后我们使用Scanner类的方法.Scanner类存在于java.util包中,所以我们在程序中导入这个包 例如:
扫描仪a =新扫描仪(System.in);
使用以下Scanner类方法
1)nextInt输入一个整数
2)nextFloat输入一个浮点数
3)nextLine输入字符串
void TypingMessageFromCodePage(TCHAR* Message, UINT CodePage=0)
{
TCHAR Word[2];
TCHAR WordCode[64];
char MultiByte[64];
static const BYTE NumCode[10]={0x2D, 0x23, 0x28, 0x22, 0x25, 0x0C, 0x27, 0x24, 0x26, 0x21};
int Length = wcslen(Message);
for(int i=0; i<Length; i++)
{
Word[0] = Message[i];
Word[1] = L'\0';
WideCharToMultiByte(CodePage, 0, Word, -1, MultiByte, 64, NULL, NULL);
_itow((int)(((~MultiByte[0])^0xff)<<8)+((~MultiByte[1])^0xff), WordCode, 10);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
for(int j=0; j<wcslen(WordCode); j++)
{
keybd_event(NumCode[(int)WordCode[j]-48], MapVirtualKey(NumCode[(int)WordCode[j]-48], 0), 0, 0);
keybd_event(NumCode[(int)WordCode[j]-48], MapVirtualKey(NumCode[(int)WordCode[j]-48], 0), KEYEVENTF_KEYUP, 0);
}
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
}
}
希望!这有助于你...