如何仅从扫描的字符串返回数字&引用;“不兼容类型”;错误。JAVA

如何仅从扫描的字符串返回数字&引用;“不兼容类型”;错误。JAVA,java,incompatibility,Java,Incompatibility,我试图编译我的代码,但我得到了一个“不兼容的错误”与我的最后一个代码(否则如果)。我试图在代码中说,“如果输入是数字和字母的混合体,则只返回数字”,但它告诉我,我所做的有问题,我无法理解 import java.util.*; 公共类Pr8{ 公共静态void main(字符串[]args){ 扫描仪扫描=新扫描仪(System.in); //提示用户要输入多少个数字 System.out.print(“*请填写要输入的数字:”); 如果(!scan.hasnetint()) System.ou

我试图编译我的代码,但我得到了一个“不兼容的错误”与我的最后一个代码(否则如果)。我试图在代码中说,“如果输入是数字和字母的混合体,则只返回数字”,但它告诉我,我所做的有问题,我无法理解

import java.util.*;
公共类Pr8{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
//提示用户要输入多少个数字
System.out.print(“*请填写要输入的数字:”);
如果(!scan.hasnetint())
System.out.println(“-抱歉,您的输入不正确。编译器只允许输入的数字。”);
否则{
int a=scan.nextInt();//a是用户请求的扫描编号
int[]n=new int[a];//是一个数组,用于声明与用户输入的变量相同的变量
int num=1;//打印时显示字符串的排序号
//提示用户输入数字和字母的混合
for(int i=0;i
n[i]=scan.nextLine()

您正在为整型变量分配字符串。你不能那样做

您可能应该显示一条错误消息,提示用户只输入数字。如果希望向用户显示无效的输入,请将
扫描.nextLine()
返回的
字符串存储在
字符串
变量中。

用户必须右键。你的程序有点不干净。我建议你去掉注释,使用变量名告诉读者它们应该包含什么。您想要的可能是:

import java.util.Scanner;
公共类Pr8{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
System.out.print(“您希望输入多少数字?”);
而(!scanner.hasnetint()){
System.err.print(“请再说一遍,有多少个数字?”);
scanner.next();
}
int numberCount=scanner.nextInt();
int[]数字=新的int[numberCount];
对于(int i=0;i
控制台日志示例:

您希望输入多少个数字?weewdfsa
再说一遍,有多少个数字?324klj
再说一遍,有多少个数字?5.
请输入包含数字23的字符串#1
找到的数量#1=23
请输入包含数字的字符串#2:sdfsdf
同样,字符串#2应该包含一个数字:werq
同样,字符串#2应该包含一个数字:sdf345df
找到的数量#2=345
请输入包含数字:-34ewr的字符串#3
找到的数字#3=-34
请输入包含数字wqweq+555的字符串#4
找到的数量#4=555
请输入包含数字的字符串#5:xxx-11yyy
找到的数字#5=-11

下面是从字符串中筛选数字的示例。代码有点乱…希望您能理解

package strings;
public class ScanNumbersOnly {

    public static void main(String[] args) {
        StringBuilder builder=new StringBuilder();
        int i=0,k=0,counter=0;
        String input="4 h5i dhfg 454hdkjfg dkjfhg iudhfg";
        System.out.println("String="+input);
        String spaceRemover[]=input.split(" ");
        for(String s:spaceRemover){
            builder.append(s);
        }
        input=builder.toString();

        char stringTocharacter[]=input.toCharArray();
        int stringarray[]=new int[stringTocharacter.length];
        for(char s:stringTocharacter){
            int charTonumericvalue=Character.getNumericValue(s);
            if(charTonumericvalue<=9){
                stringarray[i]=charTonumericvalue;
                counter++;
            }
            i++;
        }
        int finallist[]=new int[counter];
        for(int s:stringarray){
            if(s>0){
                finallist[k]=s;
                k++;
            }
        }
        System.out.print("After filtiring string=");
        for(int numberextractor:finallist){
            System.out.print(numberextractor);
        }

    }
}
包字符串;
仅限公共类扫描号码{
公共静态void main(字符串[]args){
StringBuilder=新的StringBuilder();
int i=0,k=0,计数器=0;
字符串输入=“4 h5i dhfg 454hdkjfg dkjfhg iudhfg”;
System.out.println(“String=“+input”);
String spaceRemover[]=input.split(“”);
用于(字符串s:间隔符上方){
建造商。附加;
}
input=builder.toString();
char stringTocharacter[]=input.ToCharray();
int stringarray[]=新的int[stringTocharacter.length];
用于(字符s:stringTocharacter){
int charTonumericvalue=Character.getNumericValue;
if(图表数值0){
finallist[k]=s;
k++;
}
}
System.out.print(“过滤后字符串=”);
用于(整数牵引器:最终列表){
系统输出打印(编号拖拉机);
}
}
}

我知道,但我试图告诉编译器,如果用户输入一个数字,则只打印该数字。否则,如果打印的是数字和字母的混合体,则只返回数字。我该怎么写呢?@Bader你可能需要一些正则表达式,但对我来说这不是一个好方法。假设用户错误地输入了1O7,而不是107。您会将其视为17,而不是将错误告知用户并请求有效输入。您是对的。但是,这就是我想返回数字的原因,这样用户就有机会查看他输入的数字。你知道这样做需要什么样的表达式吗?程序应该如何工作的示例:要输入多少数字?4(由用户)47ab3=473/////xxxA2zz=2///x1x2x0x=120///abcdefg1hijkl2MNOP=12///你能看看我的问题吗://我做的程序是9的补充