Fórum Vetor/Array de Char como utilizar?? #569077

03/06/2009

0

Olá, sou novo no Fórum e sou iniciante em programação. Estou com um problema com um algoritmo Esse algoritmo deve receber os valores inseridos pelo usuario em dois vetores A e B e armazenar as 4 operações (+-*/) para posteriormente em um vetor C com uma operação em cada vetor de A e B guardar os valores em C. Exemplo: va[0] = 1, va[1] = 2 vb[0] = 2, vb[1] = 1 vo[0] = +, vo[1] = - Resultado: vc[0] = 1 + 2, vc[1] = 2 - 1; Do livro Forbellone. O Algoritmo é +/- assim.
import javax.swing.JOptionPane;
public class R11 {
    public static void main(String[] args) {
        int[] va, vb;
        va = new int[20];
        vb = new int[20];
        String[] vo = new String[20];
        double[] vc;
        vc = new double[20];
        String sva, svb;
        char svo;


        for(int i = 0; i<=19; i++){
            sva = JOptionPane.showInputDialog(null, "Digite os valores dos vetores de A de 1 ate 20");
            va[i] = Integer.parseInt(sva);
        }
        for(int i = 0; i<=19; i++){
            svb = JOptionPane.showInputDialog(null, "Digite os valores dos vetores de B de 1 ate 20");
            vb[i] = Integer.parseInt(svb);
        }
      for(int j = 0; j<=19; j++){
      	svo = JOptionPane.showInputDialog(null, "Digite as operações a serem feitas com os vetores de A e B de 1 ate 20");
      	vo[j] = char.parsechar(svo); // aqui ocorre um erro, como se insere valores dentro de um vetor com char?
      }
for(int l = 0; l<=19; l++){
             vc = Double.parseDouble(vc);
             if (vo[l] == +){
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == "-"){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == "*"){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
    }
}
Se puderem me ajudar, eu agradeço muito!
Vinicius Santos

Vinicius Santos

Responder

Posts

04/06/2009

Thiago Silva

Fala cara, blza? Então, mas pq vc não simplesmente adiciona no vetor "vo" o valor digitado, como String mesmo?? Ai é só comparar depois, só que com [b]vo[l].equals("+");[/b]
Responder

Gostei + 0

05/06/2009

Vinicius Santos

[quote="Thiago Luis"]Fala cara, blza? Então, mas pq vc não simplesmente adiciona no vetor "vo" o valor digitado, como String mesmo?? Ai é só comparar depois, só que com [b]vo[l].equals("+");[/b]
vc poderia me mostrar em q parte eu coloco esse vetor? e onde ponho esse b]vo[l].equals("+") Vlw
Responder

Gostei + 0

06/06/2009

Ricardo Viana

Leia: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Character.html e isso: http://doc.java.sun.com/DocWeb/api/java.lang.Character (basicamente os dois são iguais, mas o segundo tem algumas coisas em PT_BR) Tendo uma base de como trabalhar com Character vai ajudar. Alias, nem sei porque você quer colocar um char ali se o array é de Strings.
String[] vo = new String[20];
Armazena como String mesmo.
 for(int j = 0; j<=19; j++){  
          svo = JOptionPane.showInputDialog(null, "Digite as operações a serem feitas com os vetores de A e B de 1 ate 20");  

          vo[j] = String.valueOf(svo); // aqui você armazena o seu "char", mas chamando o valueOf do método String (transformando o char em String).  

       } 
Responder

Gostei + 0

06/06/2009

Vinicius Santos

Muito bom!!! Agora tá certo! O problema agora é saber como utilizar um array dentro de um if com valor definido. Vejam:
for(int l = 0; l<=19; l++){
             if (vo[l] == +){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == -){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == *){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
e ae galera?
Responder

Gostei + 0

06/06/2009

William Siqueira

[quote="viniciusmalbeck"]Muito bom!!! Agora tá certo! O problema agora é saber como utilizar um array dentro de um if com valor definido. Vejam:
for(int l = 0; l<=19; l++){
             if (vo[l] == +){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == -){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == *){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
e ae galera?
Por que char se representa por aspas simples em java:
for(int l = 0; l<=19; l++){
             if (vo[l] == '+'){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == '-'){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == '*'){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Tenta assim pra ver. Boa Sorte!
Responder

Gostei + 0

07/06/2009

Vinicius Santos

[quote="jesuino"][quote="viniciusmalbeck"]Muito bom!!! Agora tá certo! O problema agora é saber como utilizar um array dentro de um if com valor definido. Vejam:
for(int l = 0; l<=19; l++){
             if (vo[l] == +){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == -){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == *){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
e ae galera?
Por que char se representa por aspas simples em java:
for(int l = 0; l<=19; l++){
             if (vo[l] == '+'){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == '-'){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == '*'){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Tenta assim pra ver. Boa Sorte!
Isso ajudou muito! incomparable types: java.lang.String and char Mas o erro q aparece é esse:
for(int l = 0; l<=19; l++){
             if (vo[l] == '+'){ //incomparable types: java.lang.String and char
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == '-'){ // incomparable types: java.lang.String and char
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == '*'){ // incomparable types: java.lang.String and char
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Responder

Gostei + 0

07/06/2009

William Siqueira

[quote="viniciusmalbeck"][quote="jesuino"][quote="viniciusmalbeck"]Muito bom!!! Agora tá certo! O problema agora é saber como utilizar um array dentro de um if com valor definido. Vejam:
for(int l = 0; l<=19; l++){
             if (vo[l] == +){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == -){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == *){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
e ae galera?
Por que char se representa por aspas simples em java:
for(int l = 0; l<=19; l++){
             if (vo[l] == '+'){ //essa aplicação não é valida porque?
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == '-'){
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == '*'){
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Tenta assim pra ver. Boa Sorte!
Isso ajudou muito! incomparable types: java.lang.String and char Mas o erro q aparece é esse:
for(int l = 0; l<=19; l++){
             if (vo[l] == '+'){ //incomparable types: java.lang.String and char
                vc[l] = va[l] + vb[l];
            }else if(vo[l] == '-'){ // incomparable types: java.lang.String and char
                vc[l] = va[l] - vb[l];
            }else if (vo[l] == '*'){ // incomparable types: java.lang.String and char
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Nossa, verdade... Você tem que usar um método da String para comparação:
for(int l = 0; l<=19; l++){
             if (vo[l].equals('+')){ //incomparable types: java.lang.String and char
                vc[l] = va[l] + vb[l];
            }else if(vo[l].equals('-')){ // incomparable types: java.lang.String and char
                vc[l] = va[l] - vb[l];
            }else if (vo[l] .equals('*')){ // incomparable types: java.lang.String and char
                vc[l] = va[l]*vb[l];
            }else{
                vc[l] = va[l]/vb[l];
            }
        }
Responder

Gostei + 0

07/06/2009

Vinicius Santos

Hah, matou a charada agora funciona perfeitamente vlww! Ah, mantenham o topico pra se alguem tiver duvidas...
Responder

Gostei + 0

08/06/2009

Ricardo Viana

Não esquenta. Os tópicos sempre são mantidos. ;)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar