我需要帮助使用错误的用户输入进行异常处理.我正在创建一个基于文本的游戏,欢迎用户,然后进入主菜单.然后它告诉用户选项,然后查找用户输入.出于某种原因,每当我输入1或2时,它会说:"您的输入无效,请再试一次"然后返回选择.我不知道到底哪里出错了,希望有人可以帮助我.此外,它也不会捕获Mismatch Exception.希望你能帮忙!谢谢,山丹
public static void main(String[] args) {
System.out.println("Welcome to Spec Ops!");
System.out.println("Please state your name:");
Scanner name = new Scanner(System.in);
String Name = name.next();
System.out.println("Hello "+Name);
mainMenu();
}
public static void mainMenu() {
System.out.println("1. Story Mode");
System.out.println("2. Infinant Combat");
Scanner input = new Scanner(System.in);
Object Selection = input.nextInt();
boolean validOption = true;
Integer x;
try {
x = (Integer)Selection;
} catch(ClassCastException cce){
System.out.println("Your input is invalid, please try again");
validOption = false;
} catch(InputMismatchException ime){
System.out.println("Your input is invalid, …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个do-while循环,它会重新提示用户输入,直到他们输入一个大于零的整数.我不能使用try-catch; 这是不允许的.这是我得到的:
Scanner scnr = new Scanner(System.in);
int num;
do{
System.out.println("Enter a number (int): ");
num = scnr.nextInt();
} while(num<0 || !scnr.hasNextLine());
Run Code Online (Sandbox Code Playgroud)
如果输入负数,它将循环,但如果是字母,则程序终止.
java exception-handling exception do-while java.util.scanner
我如何引用从静态方法(例如main())全局定义的Scanner对象。也就是说,如何使Scanner对象成为静态对象。
程序(#供我参考问题):
import java.util.Scanner;
class spidy {
Scanner input = new Scanner(System.in); /*DECLARING SCANNER OBJECT OUTSIDE MAIN METHOD i.e Static method */
public static void main(String args[]) {
System.out.println("Enter a number");
int n = input.nextInt();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:无法从静态内容引用非静态变量输入
我正在尝试从用户读取日期以传递给GregorianCalendar变量.目前我有一个尴尬的设置,它逐行读取.你能帮助一个收集输入的解决方案吗?我发现了SimpleDateFormat类,但我找不到适合这个特定目的的类.
Scanner time = new Scanner(System.in)
System.out.println("Type year: ");int y =time.nextInt();
System.out.println("Type month: ");int m =time.nextInt();
System.out.println("Type day: ");int d = time.nextInt();
System.out.println("Type hour: ");int h = time.nextInt();
System.out.println("Type minute: ");int mm = time.nextInt();
GregorianCalendar data = new GregorianCalendar(y,m,d,h,mm);
Run Code Online (Sandbox Code Playgroud) 我已经跟踪了这段代码,无法弄清楚如何修复它.运行代码时,为什么不提示用户输入而不是Java确定没有输入?错误跟踪如下.
import java.util.*;
public class SortAsInserted {
public static void main(String[] args) {
int array_size = GetArraySize();
//System.out.println(array_size);
String[] myArray = new String[array_size];
for (int i = 0; i < array_size; i++){
String next_string = GetNextString();
System.out.println(next_string);
}
}
//public static String[] SortInsert(String nextString){
//}
public static int GetArraySize(){
Scanner input = new Scanner(System.in);
System.out.print("How many items are you entering?: ");
int items_in_array = input.nextInt();
input.close();
return items_in_array;
}
public static void PrintArray(String[] x) {
for (int i = 0; …Run Code Online (Sandbox Code Playgroud) Scanner one = new Scanner(System.in);
System.out.print("Enter Name: ");
name = one.nextLine();
System.out.print("Enter Date of Birth: ");
dateofbirth = one.nextLine();
System.out.print("Enter Address: ");
address = one.nextLine();
System.out.print("Enter Gender: ");
gender = //not sure what to do now
Run Code Online (Sandbox Code Playgroud)
嗨,我已经尝试过自己解决这个问题,但是我不能从其他例子中得到它,大多数只是接受某些字符或者A-Z + az
我试图让程序只接受男性或女性的输入忽略大小写,如果输入错误则重复"输入性别:"直到输入正确的值.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=new String();
int x=sc.nextInt();
double y=sc.nextDouble();
s = sc.next();
System.out.println("String:"+s);
System.out.println("Double: "+y);
System.out.println("Int: "+x);
}
}
Run Code Online (Sandbox Code Playgroud)
它只扫描一个单词,请提出任何建议......
我有一个类,它读取文件并使用扫描仪接收用户输入,如果扫描仪等于该文件中一行的一部分,它将显示来自同一行的字符串。
我将如何为此创建一个 Junit 测试方法?
这是我想要测试方法的一些代码:
Scanner Input = new Scanner(System.in);
String name = Input.nextLine();
BufferedReader br;
try{
br = new BufferedReader(new FileReader(new File(filename)));
String nextLine;
while ((nextLine = br.readLine()) != null)
{
if (nextLine.startsWith("||"))
{
int f1 = nextLine.indexOf("*");
int f2 = nextLine.indexOf("_");
fName = nextLine.substring(f1+1, f2);
if (name.equals(fname))
{
String[] s1 = nextLine.split("_");
String sName = s1[1];
System.out.println(sName);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的数据文件看起来像这样
||
*Jack_Davis
*Sophia_Harrolds
Run Code Online (Sandbox Code Playgroud)
我曾尝试在我的测试方法中使用此代码
@Test
public void testgetSurname() {
System.out.println("get surname");
String filename = "";
String expResult …Run Code Online (Sandbox Code Playgroud) 我有一个以下格式的文件,记录由换行符分隔,但有些记录在其中有换行符,如下所示.我需要获取每条记录并单独处理它们.该文件的大小可能只有几个Mb.
<?aaaaa>
<?bbbb
bb>
<?cccccc>
Run Code Online (Sandbox Code Playgroud)
我有代码:
FileInputStream fs = new FileInputStream(FILE_PATH_NAME);
Scanner scanner = new Scanner(fs);
scanner.useDelimiter(Pattern.compile("<\\?"));
if (scanner.hasNext()) {
String line = scanner.next();
System.out.println(line);
}
scanner.close();
Run Code Online (Sandbox Code Playgroud)
但我得到的结果有开头<\?删除:
aaaaa>
bbbb
bb>
cccccc>
Run Code Online (Sandbox Code Playgroud)
我知道Scanner会消耗任何与分隔符模式匹配的输入.我能想到的只是将分隔符模式添加回每个记录中的mannully.
有没有办法不删除分隔图案?
我想用输入文件中的行填充数组列表,输入文件如下所示:
7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000020101
7f00000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000030101
7f00000000000000000000000000000000000000000000000000000000000000047f00000000000000000000000000000000000000000000000000000000000000047f00000000000000000000000000000000000000000000000000000000000000040101
7f00000000000000000000000000000000000000000000000000000000000000057f00000000000000000000000000000000000000000000000000000000000000057f00000000000000000000000000000000000000000000000000000000000000050101
7f00000000000000000000000000000000000000000000000000000000000000067f00000000000000000000000000000000000000000000000000000000000000067f00000000000000000000000000000000000000000000000000000000000000060101
Run Code Online (Sandbox Code Playgroud)
我想基于此创建的Java中的数据对象将这些行中的每一行作为新字符串,并且它们将一起存在于列表中,可以这么说*.
因此,在我尝试将文件行读入此数组列表的不同组件时,我无法弄清楚我需要在主程序中声明数组列表的位置.我的计划是用一个单独的方法填充它:
import java.io.*;
import java.util.Scanner;
import java.util.List;
import java.util.Array;
import java.util.ArrayList;
class evmTest {
public static void main(String[] args) {
Array<String> inputLinesObject = new ArrayList<String>();
// populate from file
inputLinesObject = readFile("/Users/s.matthew.english/codes.txt", inputLinesObject);
System.out.println(Array.toString(inputLinesObject));
}
private static void readFile(String fileName, Array<String> inputLines) {
try {
File file = new File(fileName);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
// System.out.println(scanner.nextLine());
inputLines.add(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return inputLines;
} …Run Code Online (Sandbox Code Playgroud)