package maple.basic;
import java.util.Scanner;
public class number11 {
//zj a149
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int q=sc.nextInt();
Integer[] ans=new Integer[q];
String[] num=new String[q];
for(int i=0;i<num.length;i++)
{
num[i]=sc.next();
ans[i]=1;
}
for(int i=0;i<num.length;i++){
String[] tmp=num[i].split("");
for(int j=0;j<tmp.length;j++)
ans[i]*=Integer.parseInt(tmp[j]);
System.out.println(ans[i]);
}
}
sc.close();
}
}
在編譯器裡執行都沒問題,但在網站上都會RE
package maple.basic;
import java.util.Scanner;
public class number11 {
//zj a149
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int q=sc.nextInt();
Integer[] ans=new Integer[q];
String[] num=new String[q];
for(int i=0;i<num.length;i++)
{
num[i]=sc.next();
ans[i]=1;
}
for(int i=0;i<num.length;i++){
String[] tmp=num[i].split("");
for(int j=0;j<tmp.length;j++)
ans[i]*=Integer.parseInt(tmp[j]);
System.out.println(ans[i]);
}
}
sc.close();
}
}
在編譯器裡執行都沒問題,但在網站上都會RE
ans[i]*=Integer.parseInt(tmp[j]); 時 產生了 NumberFormatException
package maple.basic;
import java.util.Scanner;
public class number11 {
//zj a149
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int q=sc.nextInt();
Integer[] ans=new Integer[q];
String[] num=new String[q];
for(int i=0;i<num.length;i++)
{
num[i]=sc.next();
ans[i]=1;
}
for(int i=0;i<num.length;i++){
String[] tmp=num[i].split("");
for(int j=0;j<tmp.length;j++)
ans[i]*=Integer.parseInt(tmp[j]);
System.out.println(ans[i]);
}
}
sc.close();
}
}
在編譯器裡執行都沒問題,但在網站上都會RE
ans[i]*=Integer.parseInt(tmp[j]); 時 產生了 NumberFormatException
測資給的不都是數字嗎?
package maple.basic;
import java.util.Scanner;
public class number11 {
//zj a149
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int q=sc.nextInt();
Integer[] ans=new Integer[q];
String[] num=new String[q];
for(int i=0;i<num.length;i++)
{
num[i]=sc.next();
ans[i]=1;
}
for(int i=0;i<num.length;i++){
String[] tmp=num[i].split("");
for(int j=0;j<tmp.length;j++)
ans[i]*=Integer.parseInt(tmp[j]);
System.out.println(ans[i]);
}
}
sc.close();
}
}
在編譯器裡執行都沒問題,但在網站上都會RE
ans[i]*=Integer.parseInt(tmp[j]); 時 產生了 NumberFormatException
測資給的不都是數字嗎?
hi,
其實你遇到的問題都是同一個
在 Java jdk 1.7 之前的 split("")
一個字串 s = "123456789"
在經過 String sa[] =s.split("") 分解後
sa[0]的值 應該為 "" 而非 "1"
但是在Java jdk 1.8之後的 split("")
sa[0]的值 應該為 "1" 而非 ""
而zerojudge 所使用的編譯器為 JAVA: OpenJDK java version 1.7.0_65
所以使用上必須注意 Java(jdk)環境的不同
關於Java 1.7 到 Java 1.8 regex 的不同 可以參考此篇
http://stackoverflow.com/questions/22718744/why-in-java-8-split-sometimes-removes-empty-strings-at-start-of-result-array
另外,將字串分離的方法除了split("")外,toCharArray也是個不錯的選擇 ^_^
謝謝
package maple.basic;
import java.util.Scanner;
public class number11 {
//zj a149
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int q=sc.nextInt();
Integer[] ans=new Integer[q];
String[] num=new String[q];
for(int i=0;i<num.length;i++)
{
num[i]=sc.next();
ans[i]=1;
}
for(int i=0;i<num.length;i++){
String[] tmp=num[i].split("");
for(int j=0;j<tmp.length;j++)
ans[i]*=Integer.parseInt(tmp[j]);
System.out.println(ans[i]);
}
}
sc.close();
}
}
在編譯器裡執行都沒問題,但在網站上都會RE
ans[i]*=Integer.parseInt(tmp[j]); 時 產生了 NumberFormatException
測資給的不都是數字嗎?
hi,
其實你遇到的問題都是同一個
在 Java jdk 1.7 之前的 split("")
一個字串 s = "123456789"
在經過 String sa[] =s.split("") 分解後
sa[0]的值 應該為 "" 而非 "1"
但是在Java jdk 1.8之後的 split("")
sa[0]的值 應該為 "1" 而非 ""
而zerojudge 所使用的編譯器為 JAVA: OpenJDK java version 1.7.0_65
所以使用上必須注意 Java(jdk)環境的不同
關於Java 1.7 到 Java 1.8 regex 的不同 可以參考此篇
http://stackoverflow.com/questions/22718744/why-in-java-8-split-sometimes-removes-empty-strings-at-start-of-result-array
另外,將字串分離的方法除了split("")外,toCharArray也是個不錯的選擇 ^_^
謝謝
非常感謝解答,之前也遇過很多類似的split()問題,終於解決了:)
之前都不知道原來java 1.7 1.8的spilit有變更