Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从同一输入行读取整数和字符串(java)_Java_String_Int - Fatal编程技术网

从同一输入行读取整数和字符串(java)

从同一输入行读取整数和字符串(java),java,string,int,Java,String,Int,好的,我想知道如何从同一行读取整数和字符串?我举个例子: 如果输入=3K,我如何使输出看起来像这样:3K=3000?从分解您的需求开始 String input = "3k"; String output = input.replaceAll("[Kk]", "000"); int outputAsInt = Integer.parseInt(output); 您的输入值为[number][modifier] 您需要从修改器中提取数字 您需要对数字应用修改器 如果您想要一个可变/灵活的

好的,我想知道如何从同一行读取整数和字符串?我举个例子:
如果输入=3K,我如何使输出看起来像这样:3K=3000?

从分解您的需求开始

String input = "3k";

String output = input.replaceAll("[Kk]", "000");

int outputAsInt = Integer.parseInt(output);
  • 您的输入值为[number][modifier]
  • 您需要从修改器中提取数字
  • 您需要对数字应用修改器
如果您想要一个可变/灵活的解决方案,其中可以提供任何类型的修改器,则需要确定用户输入的位数,然后确定修改器

一旦你有了它,你可以分割
字符串
,将数字转换成
整数
,并根据修饰符应用适当的计算

Scanner kb = new Scanner(System.in);
String input = kb.nextLine();

int index = 0;
while (index < input.length() && Character.isDigit(input.charAt(index))) {
    index++;
}

if (index >= input.length()) {
    System.out.println("Input is invaid");
} else {
    String digits = input.substring(0, index);
    String modifier = input.substring(index);

    int value = Integer.parseInt(digits);
    switch (modifier.toLowerCase()) {
        case "k":
            value *= 1000;
            break;
        //...
        }

    System.out.println("Expanded value = " + value);
}
Scanner kb=新的扫描仪(System.in);
字符串输入=kb.nextLine();
int指数=0;
while(index=input.length()){
System.out.println(“输入为invaid”);
}否则{
字符串数字=输入。子字符串(0,索引);
字符串修饰符=输入。子字符串(索引);
int value=Integer.parseInt(数字);
开关(修饰符.toLowerCase()){
案例“k”:
数值*=1000;
打破
//...
}
System.out.println(“扩展值=”+值);
}

000
替换放置在数字前面的
k
?我该怎么做?将其作为
字符串读取,去除非数字数据,并对数字组件应用所需的修改…我想(int)至少会得到3,不是吗?但是我不知道如何使用k:/I将使用regex和
replaceAll
方法,但我不确定您是否对这种解决方案感兴趣。如果字符串中有其他
k
不应该被替换,该怎么办?@Pshemo这是一个很好的观点,但我从未见过3kk,它通常是3K不,事实上就像它应该是这样的!非常感谢,顺便说一句,只要字符串输出=输入,字符串输入应该是“3K”,而不是“3K”。替换(“K”,“000”);:)你是对的。我更新了答案,以涵盖大小写k和多个k'scan我请求您的帮助?@KickButtowski什么意思?我们可以在聊天室里交谈吗?@KickButtowski为什么不为您的问题发布单独的问题?好的,我让你们两个单独呆着。好好玩:)