
No.3ベストアンサー
- 回答日時:
> 先程作っていただきたプログラムをどのように変えればAが3以上連なってもきちんと出現回数を出力できるようになるのか教えて頂きたいです。
うーん、ちとメンドくせぇんだけど・・・。
こうすればいいかな?
// ここから
String str = "AAABBTGTTABTTTGAAABGBATTAAAAAT";
int len = 0;
int c = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'A') {
while(str.charAt(i) == 'A') {
len += 1;
i++;
}
if (len == 3) {
c++;
}
len = 0;
}
}
println(c);
// ここまで
多分これで大丈夫かな?
ロジックとしては、'A'を発見した時点で内部的にwhile内でiを進めます。
'A'が続けば'A'が続いた数を変数lenを使ってカウントしていきます。
連続した'A'が終わった時に、長さが3ならカウンタcを増加、そうじゃない場合、結果を捨てます。そしてどのみちlenを0に戻して次のパターンが来るのを待つ。
これで大丈夫だとは思いますがね。
No.4
- 回答日時:
パターンマッチした結果を勘定すれば簡単です。
DNA 塩基配列のような大量データを扱うのでなければ問題ないでしょう。
int numA = matchAll(str, "A").length; // A の出現回数
int numAAA = matchAll(str, "AAA").length; // AAA の出現回数
println(1.0 * numA / str.length());
println(numAAA);
No.2
- 回答日時:
> 回答ありがとうございます。
書いていただいたプログラムをそのままprocessingで実行してみたのですが、「Incompatible operand types char and String」というエラーがでてしまいました。どうしてでしょうか……1. ヴァージョンはどうなってるでしょうか。
僕がインストールしてみたProcessingは(多分最新版の)3.5.4ですが、古いヴァージョンだったら入れ直して見て下さい。
2. コードはコピペしたんでしょうか?
もし、コピペじゃない場合、間違って
str.charAt(i) == 'A'
を
str.charAt(i) == "A"
と打ってたら仰ってるようなエラーが出ると思います。
Javaでは"何とか"は文字列で、'何とか'は文字になります。文字列と文字を比較しようとすると
Incompatible operand types char and String
と言うエラーが出ます。
シングルクオーテーションとダブルクオーテーションはJavaだと意味が違います。
自分が''A''にしてしまっていました。詳しく教えて頂きありがとうございます。
"AAABBTGTTABTTTGAAABGBATTAAAAAT '' というようにAが5つ連なるところをつくってみたのですが、この時のAAAの出現回数を求めたい時先程のプログラムだと3回にしたいところ、5回になってしまいました。先程作っていただきたプログラムをどのように変えればAが3以上連なってもきちんと出現回数を出力できるようになるのか教えて頂きたいです。
No.1
- 回答日時:
processingってプログラミング言語は初めて聞いたんですが、多分こう書くんじゃないかしらん(言語的には簡易Javaってカンジ)。
やっつけですが。
// ここから
String str = "AAABBTGTTABTTTGAAABGBATTAAAT";
int c = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'A') {
c++;
}
}
println((float)c/str.length());
c = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'A') {
if (str.charAt(i+1) == 'A' && str.charAt(i+2) == 'A') { // ただし、Aが3回以上続くケースに関してはチェックしてない
c++;
}
}
}
println(c);
// ここまで
なお、どうも調べてみたら、Pythonも使えるみたいなんで、Pythonの方が色々とラク出来るかも、とは思います。
回答ありがとうございます。書いていただいたプログラムをそのままprocessingで実行してみたのですが、「Incompatible operand types char and String」というエラーがでてしまいました。どうしてでしょうか……
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- その他(gooサービス) Sランクへの情熱の話 3 2022/11/20 09:00
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
countに実行した回数をいれたい...
-
javaのプログラミングについて...
-
コマンドライン引数の例外処理...
-
java 素数判定
-
テキストボックスに入力された...
-
エラー(互換性の無い型)
-
processingで String str="AAAB...
-
数値⇒漢数字変換 java
-
Java 配列<選挙>
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
文字列を逆転させて表示するには
-
2次元配列の並び替え
-
System.out.printlnの意味がよ...
-
System.err. printlnとSystem.o...
-
JavaScriptの変数の値が消える!?
-
動的配列が存在(要素が有る)か...
-
大量のデータを読み込んで表示...
-
【SQLServer接続のJSPの記述を...
-
シフトJISのエンコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
7つ数字を表示したら改行すると...
-
countに実行した回数をいれたい...
-
JAVAのfor文で困っています。
-
(急いでいます)Javaで3回間違...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
点数をだす時に、maxとminがお...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
配列を逆順させて表示させる方...
-
Java 配列 勝敗、引き分け判定...
-
繰り返しによる星印の出力
-
javaプログラムについて
おすすめ情報