![]() |
|
|
|||||||
| Java Diskussioner om all typ av Javautveckling. |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
Medlem
Registrerad: 2001-08-02
Ort: malmö
Inlägg: 203
Lösningar: 0 |
konvertera string till int
Tjena!
Jag sitter och meckar med en webshop och skall modifiera ett värde Värdet finns i denna variablen header.getNetValue(), men när jag försöker konvertera till int, så blir det syntax error (dessvärre så ser jag inte felet). int num=Integer.parseInt(header.getNetValue()); ger alltså syntax error, hur tusan får jag det till integer så att jag kan multiplicera värdet??? Tack på förhand! rollo |
|
|
|
|
|
#2 |
|
Medlem
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179 |
Är värdet helt numeriskt? Fångar du exceptions någonstans?
Kod:
int num;
try {
num = Integer.parseInt(header.getNetValue());
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
}
__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!" |
|
|
|
|
|
#3 |
|
Medlem
Registrerad: 2001-08-02
Ort: malmö
Inlägg: 203
Lösningar: 0 |
Värdet är en summa, så det bör vara numeriskt.
Enda gången jag kan fånga värdet är om jag gör String rollo = header.getNetValue(); försöker jag göra det till int istället så krashar sidan rollo |
|
|
|
|
|
#4 |
|
Medlem
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 757 |
Om Integer.parseInt "kraschar" torde det antagligen bero på en av två saker:
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten. Vissa dagar är man myggan, andra dagar är man vindrutan. XML är som våld; löser det inte ens problem betyder det att man använder för lite. |
|
|
|
|
|
#5 |
|
Medlem
Registrerad: 2001-08-02
Ort: malmö
Inlägg: 203
Lösningar: 0 |
ok, jag får försöka jaga rätt på felet på något sätt.
Jag ser att värdet är 0.00 i vart fall om det kan vara någon hjälp. (är det nu ni säger; "för fan, det där skulle du sagt från början!!!") rollo |
|
|
|
|
|
#6 |
|
Medlem
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 757 |
Japp
![]() 0.00 är inte ett heltal utan ett flyttal och är således inte kosher indata till parseInt... du får använda någon form av flyttal, som double. Kod:
double num;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
}
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten. Vissa dagar är man myggan, andra dagar är man vindrutan. XML är som våld; löser det inte ens problem betyder det att man använder för lite. |
|
|
|
|
|
#7 |
|
Medlem
Registrerad: 2001-08-02
Ort: malmö
Inlägg: 203
Lösningar: 0 |
:l solly!
Jag kör med din kod Kod:
double num;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
out.println("NEJ!");
}
Jag har hittat en log som verkar ge mig ett felet. Kod:
Jan 15, 2008 8:16:16 AM,409 SAPEngine_Application_Thread[impl:3]_39 Error bbcom.sapmarkets.isa.core.ActionServlet [released|system.exception] An exception has occurred: {0}
com.sap.engine.services.servlets_jsp.server.jsp.exceptions.CompilingException: Error while executing the compilation process: [C:/usr/sap/QD1/JC00/j2ee/cluster/server0/apps/sap.com/crm.b2b/servlet_jsp/b2b/work/jsp_order1200381374441.java:1016: variable num might not have been initialized
out.print(num);
^
1 error
].
at com.sap.engine.services.servlets_jsp.server.jsp.JavaCompiler.compileExternal(JavaCompiler.java:142)
at com.sap.engine.services.servlets_jsp.server.jsp.JavaCompiler.compile(JavaCompiler.java:238)
at com.sap.engine.services.servlets_jsp.server.jsp.JSPParser.generateJavaFile(JSPParser.java:369)
at com.sap.engine.services.servlets_jsp.server.jsp.JSPParser.parse(JSPParser.java:107)
at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.getClassName(JSPServlet.java:238)
at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.compileAndGetClassName(JSPServlet.java:429)
at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:169)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork(RequestDispatcherImpl.java:321)
at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:377)
at org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1758)
at com.sapmarkets.isa.core.ActionServlet.processActionForward(ActionServlet.java:267)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
at com.sapmarkets.isa.core.ActionServlet.process(ActionServlet.java:430)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:491)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:117)
at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:62)
at com.sapmarkets.isa.isacore.TealeafFilter.doFilter(TealeafFilter.java:71)
at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:58)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:384)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Jag tolkar det som om variablen num inte är deklarerad korrekt, men fattar inte hur jag skall deklarera den! Tack på förhand! rollo |
|
|
|
|
|
Markerad som löst av rollo #8 |
|
Medlem
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 757 |
Ah, my bad. Mitt exempel var visst lite minimalt. När man skriver så här:
Kod:
double num;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
}
out.println(num);
Kod:
// variant 1: ge ett defaultvärde
double num = 0;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
/* Inte bara siffror i strängen */
}
out.println(num);
// variant 2a: kasta vidare exception
double num = 0;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
// kasta vidare ett undantag med bättre felmeddelande och en
// referens till det ursprungliga undantaget
throw new ServletException("getNetValue returned invalid double value", e);
}
out.println(num);
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten. Vissa dagar är man myggan, andra dagar är man vindrutan. XML är som våld; löser det inte ens problem betyder det att man använder för lite. |
|
|
|
|
|
#9 |
|
Medlem
Registrerad: 2001-08-02
Ort: malmö
Inlägg: 203
Lösningar: 0 |
Alternativ 1 funkade perfekt!
Hade du varit här så hade du fått en stor blöt puss!
|
|
|
|
|
|
#10 |
|
Medlem
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 757 |
Var också medveten om att alt. 1 är det fulare av de tu. En dag kommer komma då du sitter och kliar dig i huvudet och undrar varför i hela fridens namn alla kolumner har "0" som värde, eftersom du sväljer undantaget. Logga det i alla fall:
Kod:
double num = 0;
try {
num = Double.parseDouble(header.getNetValue());
} catch(NumberFormatException e) {
log("error parsing getNetValue(); using default value " + num, e);
}
out.println(num);
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten. Vissa dagar är man myggan, andra dagar är man vindrutan. XML är som våld; löser det inte ens problem betyder det att man använder för lite. |
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|