0

e には、2 桁または 4 桁の年を受け入れることができる日付形式があります。私は例外をコーディングしようとしているわけではありません...年が2桁または4桁の長さの場合だけです。「/」の最後のインスタンスを見つけるために lastIndexOf を使用しています。スラッシュの後の 3 番目の文字が数字の場合、4 桁の年を想定しています。それ以外の場合は、2 桁の年です。

これが現在問題を引き起こしている唯一の行であることをすでにテストして検証しました。

if (inputLine.lastIndexOf.isNumeric("/"))+3 {
   year = inputLine.trim().substring(inputLine.lastIndexOf("/")+1,input.lastIndexOf("/")+4).trim);
   else year = "0000";

コンパイル エラーが発生し続けます。インデックス値に追加している行については、bad operand for the binary operator. さらに、変数 lastIndexOf が見つかりません。

io以下のリストをプログラムの先頭で呼び出しています。Java ドキュメントからわかる限りlang、適切なメソッドとクラスを取得しています。

import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.lang.*;

ステートメントについてはif、私の括弧は釣り合っていますが、追加の文字 (たとえば、インデックス値 + 3) の追加がネストされた括弧の正しいレベル内で行われているかどうかはわかりません。そうは言っても、これらの整数を上から追加しようとしましたが、ほとんど役に立ちませんでした。

if (inputLine.lastIndexOf.isNumeric("/"))+3 {
   year = inputLine.trim().substring(inputLine.lastIndexOf("/")+1,input.lastIndexOf("/")+4).trim);
   else year = "00/00/0000";

私はいくつかのことを考えています: まず、これを 1 つのステートメントで行うことができますか、それとも 1 つのステートメントでインデックスを定義してから、後続のステートメントで index+offset-value を定義する方がよいでしょうか?

単一のフィールドで動作する複数のメソッドとクラスを使用している場合 (たとえば、.trim().substring.Indexof()Java がそれらを解析する順序は? これらのステートメントがどのように解析されるかを理解したいので、理解を深めたいと思います)変数を操作し、出力をテストするための最良の方法。

4

3 に答える 3

2

+3を誤って使用しています。if(condition)ステートメントの外に、構文的に意味をなさない場所に配置しています。これは、コード内のgobbledygookです。

また、inputline.lastIndexOf('/')の結果が数値であるかどうかをテストしようとしている場合、それは何の意味もありません。指定された文字が発生しない場合、lastIndexOfは例外をスローしません。-1を返すだけです。結果がゼロより大きい/等しいかどうかをテストする必要があります。

于 2012-07-16T19:02:09.903 に答える
1

質問の最後の部分について

.trim().substring.Indexof()各メソッドが左から右の順序で呼び出されるように、メソッドチェーンを行う場合。そう:

String myString = " string ";
int index = myString.trim.substring(3).indexOf('n');

は次のものに匹敵します。

String myString = " string ";
String trimmedString = myString.trim(); // "string"
String subString = trimmedString.substring(3) // "ing"
int index = subString.indexOf('n'); // 1
于 2012-07-16T19:08:10.893 に答える
1

trim() を使用してから、元の文字列のインデックスを使用することはできません。文字列を trim() してから、トリミングされた文字列のインデックスを使用する必要があります (そうしないと、インデックスが完全に正しくない可能性があります)。

おそらく、フォーマットで SimpleDataFormat を使用するdd/MM/yyyyか、分割を使用する方が良い選択でしょう。

String[] parts = inputLine.trim().split("/");
String day = parts[0], month = parts[1], year = parts[2];

trim() と lastIndexOf() を使用するには

String trimmed = inputLine.trim();
int last = trimmed.lastIndexOf("/");
year = trimmed.substring(last+1);
于 2012-07-16T19:00:58.170 に答える