我有一个程序的以下部分,它模拟一个非常基本的菜单.
while (true) {
int selection;
try {
selection = scanner.nextInt();
} catch (Exception e) {
selection = -1;
}
switch (selection) {
case 0:
System.exit(0);
default:
System.out.println("No valid selection!");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,每当我输入不是整数时,将selection设置为,-1并打印错误消息.然而,循环继续无休止地,Scanner不等待任何输入.
我怎么告诉它再等一下?如何在格式错误的用户输入上更优雅地失败?
在将文本文件的行添加到List时,我不想在列表中添加空行.我尝试了这个但没有工作:
Scanner s=new Scanner(new File(text.txt));
List <String> names=new ArrayList<String>();
while(s.hasNext()){
if (s.nextLine()!=null){
names.add(s.nextLine());
}}
Run Code Online (Sandbox Code Playgroud)
我的文本文件如下所示:
name1 erer | 26-08-1988
name2 rerer | 13-07-1988
name3 erer | 14-07-1988
name4 weww | 13-07-2001
name5 ewew | 18-10-1987
Run Code Online (Sandbox Code Playgroud) 我是java的新手,我遇到了一个我自己无法解决的问题.我用Google搜索了异常,但问题太具体了,据我所知,所以我发现自己在这里.这是我的问题.
我有一个名为Student的类,它有一些数据成员及其get/set方法:
private String studentNumber;
private String firstName;
private String lastName;
private int age;
private String gender;
private String country;
Run Code Online (Sandbox Code Playgroud)
我创建了一个实例数组作为fallowing:
Student studentList[] = new Student(10);
Run Code Online (Sandbox Code Playgroud)
我有一个数据库(文本文件)作为fallowing
081935 Cengiz rrrrr Male 21 Turkey
082935 Ay?e aaaaa Female 22 England
083935 Onur bbbbb Male 23 Germany
084935 Fatma ccccc Female 24 Cyprus
085935 Ali dddd Male 21 China
086935 Zehra eeee Female 22 Denmark
087935 Murat ffff Male 25 France
088935 Selin ggggg Female 26 Japan
086935 Cengiz hhhh Male 20 …Run Code Online (Sandbox Code Playgroud) 好吧,所以我似乎无法让这个工作,虽然很多人告诉我语法和逻辑是正确的.谁能告诉我我可能做错了什么?
public Scanner in = new Scanner(System.in);
public void movePlayer() {
System.out.print("move: ");
String str = in.nextLine();
in.nextLine();
char c = str.charAt(0);
if (c == 'l' || c == 'L') {
player.moveLeft();
}
}
Run Code Online (Sandbox Code Playgroud)
该程序被char捕获 c = str.charAt(0);
我正在返回此错误:
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0(在java.lang.String中)
我有一个java程序,我必须得到用户输入,但是,我只需要输入一次用户输入,之后我就不再需要扫描仪了.执行以下操作:
int userInput = new Scanner(System.in).nextInt();
Run Code Online (Sandbox Code Playgroud)
给我一个资源泄漏警告,说<unassigned closeable value> is never closed.
还有另外一种方法我只能使用一次扫描仪,然后摆脱它,所以没有资源泄漏吗?也许类似于C#的using陈述.
代码应该要求每个数组的三个输入:(ID,然后是Name,然后是Major).
ID工作完美,但是当它命名时,它打印出来:
请输入学生姓名:请输入学生姓名:
并且只允许该行的一个输入.然后它进入Major并再次正常工作.所以我最终得到3个ID,2个名字和3个专业.
这是我的代码:
package STUDENT;
import java.util.Scanner;
public class StudentDisplayer {
public static void main(String[] args) {
long[]studentId = {11, 22, 33};
String[] studentName = {"Value1", "Value2", "Value3"};
String[] studentMajor = {"Value1", "Value2", "Value3"};
Scanner inReader = new Scanner(System.in);
/* ----------------------------------------------
Print the information in the parallel arrays
---------------------------------------------- */
for (int i = 0; i < studentId.length; i++ ){
System.out.println("Please enter the student's id: ");
studentId[i] = inReader.nextLong();
}
for (int i = 0; i < studentName.length; …Run Code Online (Sandbox Code Playgroud) 我在第5行收到NullPointerException.我不确定为什么或如何解决它...
public static Scanner getInputScanner(Scanner console){
Scanner inputFile = new Scanner(System.in);
Scanner file = null;
String userInputFile = null;
while (file.equals(null)) {
try {
System.out.print("Enter input file: ");
userInputFile = inputFile.nextLine();
file = new Scanner(new File(userInputFile));
} catch (FileNotFoundException e) {
System.out.print(userInputFile + " (No such file or directory)");
file = null;
return file;
}
}
return file;
}
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
所以我有3个类,一个运行所有代码.学生班,研究生班和本科班,以及运行代码的实验室4班.该代码询问有多少研究生和有多少本科学生,然后要求用户输入每个学生的所有信息.在输入所有信息之后,将under grad或grad student对象添加到学生的数组列表中.添加完所有学生后,打印所有信息.但是,当我输入所有信息时,阵列不打印,程序终止.如何让阵列打印出来?
码:
实验4:创建学生对象,数组列表,将它们添加到数组中,并打印添加到数组列表中的对象的所有信息
import java.util.ArrayList;
import java.util.Scanner;
public class Lab04 {
public static void main(String[] args) {
ArrayList <Student> studentList = new ArrayList <Student>();
Scanner s = new Scanner(System.in);
System.out.println("How many Graduate Students do you want to store?");
int numOfStudents = s.nextInt();
s.nextLine();
for (int i = 0; i < numOfStudents; i++) {
System.out.println("What is the student's name?");
String name = s.nextLine();
System.out.println("What is the student's GPA?");
double GPA = s.nextDouble();
s.nextLine();
System.out.println("What is the student's ID?");
String …Run Code Online (Sandbox Code Playgroud) 我想问用户(使用Scanner)他希望程序循环多少次.我需要使用do-while循环语句来执行此操作,但每当我输入我希望它循环的次数时,它只会从我放入的值中减去它,然后重复该数量.
例如,我输入4,程序重复16次而不是4次.
这是我的计划:
System.out.println("Enter range");
int y = input.nextInt();
int x = 10;
do {
System.out.print("value of x : " + x );
x++;
y++;
System.out.print("\n");
} while(y < 20);
Run Code Online (Sandbox Code Playgroud)
我的问题在哪里?
我的初始代码没有产生所需的结果:
import java.util.Scanner;
class Strings {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your word: ");
String word1 = sc.next();
System.out.println(word1.length());
sc.close();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
tk@localhost:~$ java Strings
Enter your word:
avada kedavra
5
Run Code Online (Sandbox Code Playgroud)
这不是我的字符串的长度.但当我尝试这个(没有用户输入):
class Strings {
public static void main(String[] args) {
String str = new String("avada kedavra");
System.out.println(str.length());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
tk@localhost:~$ java Strings
13
Run Code Online (Sandbox Code Playgroud)
有用!那么,当我从用户那里获取输入时,为什么它不起作用?我错过了什么?