comprimento de cadeia do java unicode
<p>eu estou tentando muito obter a contagem de seqüência unicode e tentei várias opções. parece um pequeno problema, mas atingiu um grande caminho.</p><p>aqui estou tentando obter o comprimento da string str1. eu estou recebendo como 6. mas na verdade é 3. mover o cursor sobre a string &quot;குமார்&quot; também mostra como 3 caracteres. </p><p>basicamente eu quero medir o comprimento e imprimir cada caractere. como &quot;கு&quot;, &quot;மா&quot;, &quot;ர்&quot;.</p><pre><code> public class one { public static void main(string[] args) { string str1 = new string("குமார்"); system.out.print(str1.length()); } } </code></pre><p>ps: é a linguagem tamil.</p>
<p>encontrei uma solução para o seu problema.</p><p>baseado em <a href="https://stackoverflow.com/a/8798355/637284">this so answer</a> eu fiz um programa que usa classes de caracteres regex para procurar por letras que possam ter modificadores opcionais. ele divide sua string em caracteres simples (combinados, se necessário) e os coloca em uma lista:</p><pre><code>import java.util.*; import java.lang.*; import java.util.regex.*; class main { public static void main (string[] args) { string s="குமார்"; list&lt;string&gt; characters=new arraylist&lt;string&gt;(); pattern pat = pattern.compile("\\p{l}\\p{m}*"); matcher matcher = pat.matcher(s); while (matcher.find()) { characters.add(matcher.group()); } // test if we have the right characters and length system.out.println(characters); system.out.println("string length: " + characters.size()); } } </code></pre><p>onde <code>\\p{l}</code> significa uma letra unicode e <code>\\p{m}</code> significa uma marca unicode.</p><p>a saída do trecho é:</p><pre><code>கு மா ர் string length: 3 </code></pre><p>veja <a href="https://ideone.com/apkapn">https://ideone.com/apkapn</a> para uma demonstração funcional</p><hr><p><strong>edit</strong></p><p>eu agora chequei meu regex com todas as cartas tamil válidas tiradas das tabelas em <a href="http://en.wikipedia.org/wiki/tamil\_script">http://en.wikipedia.org/wiki/tamil\_script</a> . descobri que com o regex atual não capturamos todas as letras corretamente (cada letra na última linha da tabela composta de grantha é dividida em duas letras), então refinei meu regex para a seguinte solução:</p><pre><code>pattern pat = pattern.compile("\u0b95\u0bcd\u0bb7\\p{m}?|\\p{l}\\p{m}?"); </code></pre><p>com este padrão em vez do acima, você deve ser capaz de dividir sua sentença em cada letra tamil válida (desde que a tabela da wikipédia esteja completa).</p><p>o código que usei para verificar é o seguinte:</p><pre><code>string s = "ஃஅஆஇஈஉஊஎஏஐஒஓஔக்ககாகிகீகுகூகெகேகைகொகோகௌங்ஙஙாஙிஙீஙுஙூஙெஙேஙைஙொஙோஙௌச்சசாசிசீசுசூசெசேசைசொசோசௌஞ்ஞஞாஞிஞீஞுஞூஞெஞேஞைஞொஞோஞௌட்டடாடிடீடுடூடெடேடைடொடோடௌண்ணணாணிணீணுணூணெணேணைணொணோணௌத்ததாதிதீதுதூதெதேதைதொதோதௌந்நநாநிநீநுநூநெநேநைநொநோநௌப்பபாபிபீபுபூபெபேபைபொபோபௌம்மமாமிமீமுமூமெமேமைமொமோமௌய்யயாயியீயுயூயெயேயையொயோயௌர்ரராரிரீருரூரெரேரைரொரோரௌல்லலாலிலீலுலூலெலேலைலொலோலௌவ்வவாவிவீவுவூவெவேவைவொவோவௌழ்ழழாழிழீழுழூழெழேழைழொழோழௌள்ளளாளிளீளுளூளெளேளைளொளோளௌற்றறாறிறீறுறூறெறேறைறொறோறௌன்னனானினீனுனூனெனேனைனொனோனௌஶ்ஶஶாஶிஶீஶுஶூஶெஶேஶைஶொஶோஶௌஜ்ஜஜாஜிஜீஜுஜூஜெஜேஜைஜொஜோஜௌஷ்ஷஷாஷிஷீஷுஷூஷெஷேஷைஷொஷோஷௌஸ்ஸஸாஸிஸீஸுஸூஸெஸேஸைஸொஸோஸௌஹ்ஹஹாஹிஹீஹுஹூஹெஹேஹைஹொஹோஹௌக்ஷ்க்ஷக்ஷாக்ஷிக்ஷீக்ஷுக்ஷூக்ஷெக்ஷேக்ஷைஷொக்ஷோஷௌ"; list&lt;string&gt; characters = new arraylist&lt;string&gt;(); pattern pat = pattern.compile("\u0b95\u0bcd\u0bb7\\p{m}?|\\p{l}\\p{m}?"); matcher matcher = pat.matcher(s); while (matcher.find()) { characters.add(matcher.group()); } system.out.println(characters); system.out.println(characters.size() == 325); </code></pre>
<p><code>arrays</code> em java tem um tamanho definido, não é possível alterá-lo posteriormente adicionando ou removendo elementos (você pode ler alguns princípios básicos <a href="http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html">aqui</a> ).</p><p>em vez disso, use um <a href="http://docs.oracle.com/javase/6/docs/api/java/util/list.html"><code>list</code></a> :</p><pre><code>arraylist&lt;string&gt; mylist = new arraylist&lt;string&gt;(); mylist.add(mystring); //this adds an element to the list. </code></pre><p>obviamente, se você souber antecipadamente quantas seqüências de caracteres você colocará em sua matriz, poderá criar uma matriz desse tamanho e definir os elementos usando a posição correta:</p><pre><code>string[] myarray = new string[numberofstrings]; myarray[23] = string24; //this sets the 24'th (first index is 0) element to string24. </code></pre> olá victor, tudo bem?o problema do seu código é que você está declarando o vetor de strings de maneira incorreta. o certo é usar assim: char nome[5][100]; onde o primeiro par de colchetes é o ta... <p>oi andré tudo bem?</p>
<p>verifique se o arquivo não foi salvo como .txt ao invés de .java</p>
<p>enquanto o professor não chega na parte da ide eclipse você pode também usar esse site <a href="https://www.jdoodle.com/online-java-compiler" rel="nofollow">https://www.jdoodle.com/online-java-compiler</a> para testar os códigos java.</p> Você provavelmente está pensando sobre o termo **octeto** que é muitas vezes usado como sinônimo de um caractere de byte único (não-unicode). Octeto neste caso significa oito bits. Um personagem pode ser oito ou dezesseis ou mesmo mais bits, mas um octeto é sempre oito bits. <pre><code>for (iterator&lt;string&gt; i = someiterable.iterator(); i.hasnext();) { string item = i.next(); system.out.println(item); } </code></pre><p>note que se você precisar usar <code>i.remove();</code> no seu loop, ou acessar o iterador real de alguma forma, você não pode usar o idioma <code>for ( : )</code>, já que o iterador é meramente inferido.</p><p>como foi observado por denis bueno, este código funciona para qualquer objeto que implemente a interface <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/iterable.html"><code>iterable</code></a> .</p><p>além disso, se o lado direito do idioma <code>for (:)</code> for um objeto <code>array</code> em vez de <code>iterable</code>, o código interno usará um contador de índice int e verificará <code>array.length</code>. veja o <a href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2">java language specification</a> .</p> olá @titah, bem-vinda à comunidade. 

normalmente um sms tem até 160 caracteres, contudo ao acrescentar um símbolo (/, [, ], €, por exemplo) estes representam dois caracteres e diminuem o tamanho máximo do sms para 140. caso sejam utilizados caracteres especiais (ç, â, ã, por exemplo) a mensagem fica reduzida a um limite de 70 caracteres.

isto não está relacionado com o tarifário tudo, mas com a própria tecnologia que é utilizada pelo sms. <p>olá daniel,</p>
<p>parece que o problema é que você está comparando o texto digitado no input com um número inteiro.</p>
<p>o valor retornado pela função <code>input</code> é string.</p>
<p>experimente modificar o código para:</p>
<pre class="prettyprint"><code>if g &#61;&#61; &#39;1&#39;:
 print(&#39;oque é oque é?&#39;)
 oque.adivinhacao()
elif g &#61;&#61; &#39;2&#39;:
 print(&#39;ultimas palavras?&#39;)
 game.forca()</code></pre><p>se tiver problemas avise...</p>
<p>luan</p> <p>cria um filter e seta o encoding para utf-8, deve resolver:</p>
<pre class="prettyprint"><code>&#64;webfilter(&#34;/*&#34;)
public class characterencodingfilter implements filter {

 &#64;override
 public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws servletexception, ioexception {
 request.setcharacterencoding(&#34;utf-8&#34;);
 chain.dofilter(request, response);
 }
}</code></pre> Você pode verificar o valor do caráter:



```
if ord(c) < 128 then
    // is an ascii character

``` comprimento da circunferência = 2πr 

onde "r" = raio .

comprimento = 2*4*π = 8π 

observação: o valor de "π" só deve ser trocado por 3,14 ou por qualquer outro número quando for solicitado na questão.