我正在开发一个程序,该程序将获取一个文本文件,并将数字从0-99转换为文字(即0)-
static ArrayList<String> list;
static void convertToWord(char[] num, String fullString)
{
//number to word : https://www.geeksforgeeks.org/convert-number-to-words/
String[] single_digits = new String[]{ "zero", "one",
"two", "three", "four",
"five", "six", "seven",
"eight", "nine"};
String[] two_digits = new String[]{"", "ten", "eleven", "twelve",
"thirteen", "fourteen",
"fifteen", "sixteen", "seventeen",
"eighteen", "nineteen"};
String[] tens_multiple = new String[]{"", "", "twenty", "thirty", "forty",
"fifty","sixty", "seventy",
"eighty", "ninety"};
int len = num.length;
if (len == 0)
{
System.out.println("Error");
return;
}
if (len == 1)
{
fullString += single_digits[num[0] - '0'];
return;
}
if (len > 2)
{
System.out.println("No numbers greater than 99");
return;
}
int x = 0;
while (x < num.length)
{
if (num[x] - '0' == 1)
{
int sum = num[x] - '0' +
num[x] - '0';
fullString += two_digits[sum];
return;
}
else if (num[x] - '0' == 2 &&
num[x + 1] - '0' == 0)
{
fullString += "twenty";
return;
}
else
{
int i = (num[x] - '0');
if(i > 0)
fullString += tens_multiple[i]+" ";
else
fullString += "";
++x;
if (num[x] - '0' != 0)
fullString += single_digits[num[x] - '0'];
}
++x;
}
System.out.println(fullString);
}
public static void main(String[] args) throws FileNotFoundException
{
/* read each element of file as a separate member of array:
https://stackoverflow.com/questions/28643680/java-storing-each-word-from-an-input-file-in-an-array-of-strings */
String fullString = "";
Scanner s = new Scanner(new File("C:/Users/Zach/Desktop/Fall 2020/Java_Kotlin/java-kotlin-zpheesaker/KattisNumberstoWords/app/input.txt"));
list = new ArrayList<String>();
while(s.hasNext())
{
String token = s.next ();
list.add(token);
}
for (int i = 0; i < list.size(); i++)
{
// check if number by regex: https://stackoverflow.com/questions/18590901/check-if-a-string-contains-numbers-java
if(list.get(i).matches(".*\\d.*"))
{
convertToWord(list.get(i).toCharArray(), fullString);
}
else {
fullString += (list.get(i) + " ");
}
}
System.out.println(fullString);
}
}
这里有几行输出(每一行都是不同的system.out行):
-Piqued favour twenty three
-Piqued favour stairs it enable exeter as seeing. Remainder met improving but forty one
-Piqued favour stairs it enable exeter as seeing. Remainder met improving but engrossed sincerity age. Better but seventy eight
这是输入文件上的三行:
Piqued favour 23 stairs it enable exeter as seeing.
Remainder met improving but 41 engrossed sincerity age.
Better but 78 length denied abroad are.
如您所见,数字随系统一起添加和打印。从函数convertToWord中退出,但一旦返回main,就会丢失。如何跨函数将这些转换附加到字符串?
我可以想出两种方法:
如果您想将fullString
的值返回给您的main
方法,我建议您修改转换ToWord
使其具有返回类型String
,如下所示:
static void convertToWord(char[] num, String fullString)
然后,该方法需要返回fullString而不是什么都不返回。
最后,将main方法中的返回值或convertToWord赋给一个变量,您可以在main中使用它。
或者,您可以将fullString声明为StringBuffer,并使用方法append()对其进行追加。
我有一个函数应用,定义如下 其中< code > let-test-this-in 和< code > let-test-this-out 是连接字符串为< code >“defaultendpointsprocol=”的存储帐户下现有存储队列的名称...;account name =…;AccountKey= ... "(直接从门户中的访问键-连接字符串复制而来)。我发布时生成的function
问题内容: 为什么在这些情况下输出不同? ==> 印刷:2010年 ==> 打印:200 为什么第一个输出不是30?它与运算符优先级有关吗?就像首先将“ printing”和x连接在一起,然后将结果字符串和y连接在一起?我对么? 问题答案: 它的规则 我在下面显示从高到低的优先顺序: **如果运算符具有相同的优先级 ,* 则 此方法起作用 * 现在 :是字符串” :是Java中唯一将Number连
问题内容: 我正在使用Oracle SQL开发人员版本3.0.04。我试图使用该功能将数据分组在一起。 但是,我不断收到错误消息, 我很确定输出可能会超过4000,因为这里提到的WEB_LINK是url stem和url query的串联值。 有没有解决的办法,或者还有其他选择吗? 问题答案: 由于聚合字符串的长度可以超过4000个字节,因此不能使用该函数。您可能会创建一个用户定义的集合函数,该函
问题内容: 在vertica中有一个表:像这样测试: 如何使用聚合函数或如何编写查询以获取像这样的数据(vertica语法)? 问题答案: 首先,您需要为编译udx 。 然后,您可以执行如下查询: 使用rtrim摆脱最后一个’,’。 如果您需要以某种方式对聚合进行排序,则可能需要在嵌入式视图中或使用first进行选择/排序。
今天,当使用和驱动程序操作中的数据时,出现了一个特殊的错误。我在中创建了以下SQL模式: 一个非常基本的表,其中包含类型为的数据blob。 然后,我尝试使用提供的函数执行简单的语句。这是: 突出显示的关键点出现在执行SQL INSERT语句的行上(实际上是一个数组的索引,我在该数组中存储了不同的测试。我不想在这里包含其他数据,因为它非常长且不相关)。我收到的错误是: 现在,如果我将更改为,则错误消
问题内容: 我可以猜测浏览器已针对最新版本进行了优化,但是如何做到这一点呢?我们可以说串联字符串时最好使用吗? 更新资料 因此,在现代浏览器中,对字符串串联进行了优化,因此使用符号比要 串联 字符串时使用符号要快。 但是@Arthur指出,如果您实际上想使用分隔符连接字符串,则速度会更快。 问题答案: 浏览器字符串优化已更改了字符串串联图片。 Firefox是第一个优化字符串连接的浏览器。从1.0