• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego jest wyjątek gdy podam np A a jak liczbę to normalnie działa

VPS Starter Arubacloud
0 głosów
124 wizyt
pytanie zadane 20 kwietnia 2017 w Java przez konrad99 Gaduła (4,090 p.)
package systemy_liczbowe;

import java.util.Scanner;
import java.util.Vector;

public class Sysliczbowe {
	 
	
	Vector<String> porownanie = new Vector<String>(); 
	private  void zapeln()
	{
	  porownanie.add("01");
	   porownanie.add("012");
	    porownanie.add("0123");
	     porownanie.add("01234");
	      porownanie.add("012345");
	       porownanie.add("0123456");
	        porownanie.add("01234567");
	         porownanie.add("012345678");
	          porownanie.add("0123456789");
	           porownanie.add("0123456789aA");
	            porownanie.add("0123456789aABb");
	             porownanie.add("0123456789AaBbCc");
	              porownanie.add("0123456789AabBCcDd");
	               porownanie.add("0123456789AaBbCcdDEe");
	                porownanie.add("0123456789aAbBcCdDdEeFf");
	};
	public Sysliczbowe(){
		 porownanie.add("01");
		   porownanie.add("012");
		    porownanie.add("0123");
		     porownanie.add("01234");
		      porownanie.add("012345");
		       porownanie.add("0123456");
		        porownanie.add("01234567");
		         porownanie.add("012345678");
		          porownanie.add("0123456789");
		           porownanie.add("0123456789aA");
		            porownanie.add("0123456789aABb");
		             porownanie.add("0123456789AaBbCc");
		              porownanie.add("0123456789AabBCcDd");
		               porownanie.add("0123456789AaBbCcdDEe");
		                porownanie.add("0123456789aAbBcCdDdEeFf");
	  }
	//private boolean czy_zawiera(String message,String co_ma_zawierac)
	//{
	//    bool odp =std::all_of(message.cbegin(),message.cend(),[&co_ma_zawierac](char c)
	//{return co_ma_zawierac.find(c)!=std::string::npos; }


	//                          );
	//                          return odp;
	//}
	
	
	private String odw(String pomoc)
	{
	    int rozmiar =pomoc.length();
	    String nowy=new String();
	    for(int i=0;i<rozmiar;++i)
	    {
	       
	       // nowy.valueOf(pomoc.charAt(rozmiar-i-1));
	        nowy+=(pomoc.charAt(rozmiar-i-1));

	    }
	    return nowy;
	};
	
	String zmiana_systemu_liczbowego(int z,int na,String liczba)
	{
	   // boolean czy_poprawne =czy_zawiera(liczba,porownanie[z-2]);
	  //  if(czy_poprawne==false)
	  //  {
	  //      return "x7lm";
	  //  }






	    if(z==na)
	    {
	        return liczba;
	    }
	 Vector<Integer> potegi_systemu=new Vector<Integer>();
	 for(int i=0;i<liczba.length();++i)
	 {// cout<<z<<" -<z "<<"na"<<i;
	     potegi_systemu.add((int)Math.round(Math.pow((double)z,(double)i)));
	    

	 }
	 int do_obliczen=0;
	 int wynik=0;
	 String wsp;//ewentualnie String
	 for(int i=0,j=liczba.length()-1;j>=0;--j,++i)
	{wsp=Character.toString(liczba.charAt(j));
	//wsp=liczba.charAt(j);
	    if((wsp.equals('A'))||(wsp.equals('a')))
	    {
	        do_obliczen=10;
	    }
	    else if ((wsp.equals("B"))||(wsp.equals("b")))
	    {do_obliczen=11;

	    }
	    else if ((wsp.equals("C"))||(wsp.equals("c")))
	    {do_obliczen=12;

	    }
	    else if ((wsp.equals("D"))||(wsp.equals("d")))
	    {do_obliczen=13;

	    }
	    else if ((wsp.equals("E"))||(wsp.equals("e")))
	    {
	       do_obliczen=14;
	    }
	    else if ((wsp.equals("F"))||(wsp.equals("f")))
	    {
	       do_obliczen=15;
	    }
	    else{
	    	do_obliczen = Integer.valueOf(wsp);

	         //   do_obliczen=atoi(wsp.c_str());

	    }

int zm1=do_obliczen*potegi_systemu.get(i);
	// wynik.add(((String.valueOf(do_obliczen*potegi_systemu.charAt(i))));
	//String zm2=String.valueOf(zm1);
wynik=wynik+zm1;
	}
	if(na==10)
	{
	  //  ostringstream ss;
	  //  ss<<wynik;
	 //  std::string kokos;
	   // kokos=ss.str();

	   // return kokos;
	    String floatValue = String.valueOf(wynik);
	    return floatValue;
	}
	//ostringstream dodaj_liczbe;

	String wynik_w_innym_systemie=new String();
	int modulo_wynik;
	int kopia_wynik_do_dzielenia=wynik;
	while(kopia_wynik_do_dzielenia>0)
	{
	    modulo_wynik=kopia_wynik_do_dzielenia%na;
	    switch(modulo_wynik)
	    {
	    case 10:

	        wynik_w_innym_systemie+="A";
	        break;
	        case 11:
	        wynik_w_innym_systemie+="B";
	        break;
	        case 12:
	        wynik_w_innym_systemie+="C";
	        break;
	        case 13:
	        wynik_w_innym_systemie+="D";
	        break;
	        case 14:
	        wynik_w_innym_systemie+="E";
	        break;
	        case 15:
	        wynik_w_innym_systemie+="F";
	        break;
	        default:
	          //  dodaj_liczbe<<modulo_wynik;
	          //  String wyt=modulo_wynik;
	            String wyt = String.valueOf(modulo_wynik);
	           // dodaj_liczbe.str( "" );
	            wynik_w_innym_systemie+=wyt;
	            break;
	    }
	    kopia_wynik_do_dzielenia=(kopia_wynik_do_dzielenia/na);

	}
	String nowy =odw(wynik_w_innym_systemie);
	return nowy;
	//tu odwrucony wynik
	}
	
	
	
	public static void main(String[] args)
	   {Sysliczbowe xc=new Sysliczbowe();
		Scanner odczyt = new Scanner(System.in); //obiekt do odebrania danych od użytkownika
		Scanner odczyt2 = new Scanner(System.in);
	    //  imie = odczyt.nextLine();
	//	 zapeln();
		   while(true)
		   {
			   System.out.println("Podaj system wejściowy \n "); //wyświetlamy powitanie
		       int system_wejsciowy;
		       
		       
		       system_wejsciowy=odczyt.nextInt();
		       System.out.println("Podaj system wyjsciowy \n ");
		       int system_wyj;
		       system_wyj=odczyt.nextInt();
		       System.out.println("Podaj liczbe \n ");
		     String lcz;
		       lcz=odczyt2.nextLine();
		      String wynik=xc.zmiana_systemu_liczbowego(system_wejsciowy,system_wyj,lcz);
		       if(wynik.equals("x7lm"))
		       {
		    	   System.out.println("ZLE DANE \n ");
		       }
		       else{
		      //  cout<<"liczba "<<lcz<<" w systemie "<<system_wejsciowy<<" "<<"to liczba "<<wynik<<" w systemie "<<system_wyj<<std::endl;
		        System.out.println("liczba  ");
		        System.out.println(lcz);
		        System.out.println(" w systemie  ");
		        System.out.println(system_wejsciowy);
		        System.out.println(" to liczba  ");
		        System.out.println(wynik);
		        System.out.println(" w systemie  ");
		        System.out.println(system_wyj);
		       }
		   //    odczyt.close();
		     //  odczyt2.close();

		   }
	      
	   }
	
	
	
	
	

}

 

1 odpowiedź

0 głosów
odpowiedź 20 kwietnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
wybrane 26 kwietnia 2017 przez konrad99
 
Najlepsza
Udało mi się przebrnąć przez twój kod. Popracuj troche nad formatowaniem bo trudno się to czyta. Polecam rozbijać zadania na procedury a nie wszystko w jednym bloku. Do tego jak możesz nie pisz w dwóch jezykach tylko w samym angielskim.

Co do błedu nie działa Ci A bo gdy sprawdzasz czy wsp.equals masz tam 'a' oraz 'A'. W reszcie masz " ". Zapomianłeś zmienić jak przerabiałeś z Character na String.

Podobne pytania

0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 1 października 2016 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 359 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez Wilier Bywalec (2,570 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...