Java 使Arraylist()不允许输入已编辑的数字
我正在做一个项目,它允许用户在输出窗口中输入姓名,但他们不能输入数字。我无法找出正确的代码行,以使他们无法输入数字(如果他们这样做,If将给他们一个错误消息)Java 使Arraylist()不允许输入已编辑的数字,java,Java,我正在做一个项目,它允许用户在输出窗口中输入姓名,但他们不能输入数字。我无法找出正确的代码行,以使他们无法输入数字(如果他们这样做,If将给他们一个错误消息) import java.util.*; 公共类用户输入 { 公共静态void main(字符串[]args) { 列表=新的ArrayList(); 扫描仪标准输入=新扫描仪(System.in); 做 { 集合。排序(列表); System.out.println(“当前列表为”+列表); System.out.println(“
import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
list.add(stdin.next());
}
其他的
{
打破
}
}
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
//抛出异常或什么的。
返回;
}
super.add(字符串);
返回;
}
这是我的密码
非常感谢你的帮助 您可以创建一个类来扩展
ArrayList
并重写add()
方法,检查给定的字符串是否为数字
import java.util.*;
public class UserInput
{
public static void main(String[] args)
{
List<String> list = new MyArrayList<String>();
Scanner stdin = new Scanner(System.in);
do
{
Collections.sort(list);
System.out.println("Current list is " + list);
System.out.println("Add more? (y/n)");
if (stdin.next().startsWith("y"))
{
System.out.println("Enter: ");
try {
list.add(stdin.next());
} catch (Exception e) {
// given string was a number.
}
}
else
{
break;
}
}
while (true);
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
}
}
class MyArrayList extends ArrayList<String> {
public void add(String string) {
try {
double d = Double.parseDouble(string);
} catch(NumberFormatException e) {
super.add(string);
return;
}
throw new Exception();
}
import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
List List=新的MyArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
试一试{
list.add(stdin.next());
}捕获(例外e){
//给定的字符串是一个数字。
}
}
其他的
{
打破
}
}
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
类MyArrayList扩展了ArrayList{
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
super.add(字符串);
返回;
}
抛出新异常();
}
但是您也需要重写其他“add
”方法。您可以创建一个扩展ArrayList
的类,并重写add()
方法,检查给定的字符串是否为数字
import java.util.*;
public class UserInput
{
public static void main(String[] args)
{
List<String> list = new MyArrayList<String>();
Scanner stdin = new Scanner(System.in);
do
{
Collections.sort(list);
System.out.println("Current list is " + list);
System.out.println("Add more? (y/n)");
if (stdin.next().startsWith("y"))
{
System.out.println("Enter: ");
try {
list.add(stdin.next());
} catch (Exception e) {
// given string was a number.
}
}
else
{
break;
}
}
while (true);
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
}
}
class MyArrayList extends ArrayList<String> {
public void add(String string) {
try {
double d = Double.parseDouble(string);
} catch(NumberFormatException e) {
super.add(string);
return;
}
throw new Exception();
}
import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
List List=新的MyArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
试一试{
list.add(stdin.next());
}捕获(例外e){
//给定的字符串是一个数字。
}
}
其他的
{
打破
}
}
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
类MyArrayList扩展了ArrayList{
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
super.add(字符串);
返回;
}
抛出新异常();
}
但是您还需要重写其他“add
”方法。对输入进行正则表达式测试
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class UserInput {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
Scanner stdin = new Scanner(System.in);
do {
System.out.println("Enter: ");
String strin = stdin.next();
if (isNumeric(strin)) {
System.out.println("Please enter a non numeric value");
} else {
list.add(strin);
}
Collections.sort(list);
System.out.println("Current list is " + list);
System.out.println("Add more? (y/n)");
} while (stdin.next().startsWith("y"));
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
}
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?");
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类用户输入{
公共静态void main(字符串[]args){
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做{
System.out.println(“输入:”);
字符串strin=stdin.next();
if(isNumeric(strin)){
System.out.println(“请输入非数值”);
}否则{
列表。添加(strin);
}
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
}while(stdin.next().startsWith(“y”);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
公共静态布尔值isNumeric(字符串str){
返回str.matches(“-?\\d+(\.\\d+)”;
}
}
对输入进行正则表达式测试
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class UserInput {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
Scanner stdin = new Scanner(System.in);
do {
System.out.println("Enter: ");
String strin = stdin.next();
if (isNumeric(strin)) {
System.out.println("Please enter a non numeric value");
} else {
list.add(strin);
}
Collections.sort(list);
System.out.println("Current list is " + list);
System.out.println("Add more? (y/n)");
} while (stdin.next().startsWith("y"));
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
}
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?");
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类用户输入{
公共静态void main(字符串[]args){
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做{
System.out.println(“输入:”);
字符串strin=stdin.next();
if(isNumeric(strin)){
System.out.println(“请输入非数值”);
}否则{
列表。添加(strin);
}
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
}while(stdin.next().startsWith(“y”);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
公共静态布尔值isNumeric(字符串str){
返回str.matches(“-?\\d+(\.\\d+)”;
}
}